cadrele Web sunt instrumente puternice. Ei abstractizează aspectele comune ale construirii site-urilor web și API-urilor și ne permit să construim aplicații mai bogate, mai stabile, cu mai puțin efort.
o gamă largă de cadre web este disponibilă pentru noi în Python. Unele sunt favorite dovedite cu ecosisteme și comunități mari. Alții excelează în cazuri de utilizare de nișă sau pentru anumite tipuri de dezvoltare. Cu toate acestea, altele sunt up-and-comers cu motive convingătoare noi pentru a fi luate în considerare. Citiți mai departe pentru a explora opțiunile și pentru a găsi ceea ce va funcționa cel mai bine pentru dvs.
dacă știți deja ce vă interesează, utilizați linkurile de mai jos pentru a sări înainte:
- cum să alegeți cadrul potrivit pentru nevoile dvs.
- cadre Full-Stack vs. Microframeworks vs. Cadre asincrone
- cadre Python Full-Stack
- Microframeworks pentru Python
- cadre asincrone pentru Python
- care Python web framework este cel mai bun pentru tine?
Dacă doriți ajutor pentru a decide, puteți sări direct la prezentarea generală a recomandărilor noastre.
- cum să alegeți cadrul potrivit pentru nevoile dvs.
- cadre Full-Stack vs.Microframeworks vs. cadre asincrone
- Full-Stack Python cadre
- Django
- Piramida
- Web2Py
- TurboGears
- masonit
- Microframeworks pentru Python
- Flask
- flacon
- H3: CherryPy
- șoim
- cadre asincrone pentru python
- Sanic
- FastAPI
- Starlette
- Tornado
- ce cadru Web Python este cel mai potrivit pentru tine?
cum să alegeți cadrul potrivit pentru nevoile dvs.
cadrele sunt concepute pentru a rezolva diferite probleme și pentru a face compromisuri pentru a servi mai bine publicul dorit. Dacă toată lumea ar avea aceleași obiective, am avea nevoie doar de un singur cadru! Pe măsură ce evaluați cadrele, unele considerații importante includ:
- care este dimensiunea și complexitatea eventuală probabilă a ceea ce construiți?
- preferați să alegeți propriile biblioteci, configurare și structura Aplicației sau doriți un set mai curat de opțiuni selectate pentru dvs. în avans?
- cât de importantă va fi performanța pentru proiectul tău?
- cât de repede doriți să puteți dezvolta și implementa aplicația?
- cât timp va fi aplicația dvs. și câți dezvoltatori sunt susceptibili să lucreze la ea?
în plus, luați în considerare calitatea documentației disponibile pentru opțiunile potențiale și dimensiunea comunității din jurul unui proiect – acest lucru afectează atât gama de pluginuri sau integrări existente pe care le puteți utiliza pentru a face dezvoltarea mai rapidă, cât și probabilitatea de a putea obține ajutor pe măsură ce vă blocați.
țineți minte aceste aspecte în timp ce explorați opțiunile dvs. – există o mulțime de ele! În funcție de longevitatea proiectului dvs., luați în considerare și dacă este posibil ca un cadru să crească odată cu dvs. Va fi o potrivire bună pentru aplicația dvs. atât acum, cât și în viitor?
cadre Full-Stack vs.Microframeworks vs. cadre asincrone
cadrele Python pot fi împărțite aproximativ în trei tabere, cadre full-stack, microframeworks și cadre asincrone.
cadrele Full-stack sunt, în general, axate pe construirea de aplicații mai mari, cu caracteristici complete și oferă o mulțime de funcționalități comune din cutie. Dacă sunteți în căutarea de a construi ceva complex rapid sau doriți implicite rezonabile pentru modul de a pune o cerere împreună fără a face toate alegerile-te, un cadru Full-stack este o alegere bună. Cadrele full-stack vă oferă, în general, valori implicite sensibile pentru comunicarea cu bazele de date, șablonarea vizualizărilor, gestionarea cozilor, lucrările de fundal și alte aspecte comune ale aplicațiilor mai mari.
Microframeworks sunt în general axate pe furnizarea unui nucleu mic de funcționalitate și invită dezvoltatorul să facă propriile alegeri cu privire la bibliotecile și tehnologiile pe care să le adauge pentru alte funcționalități. Acest lucru are avantajul de a permite mult mai mult control asupra proiectării aplicațiilor și poate duce la o performanță mai bună a aplicației. De obicei, acestea necesită dezvoltatorului să își aleagă propriul strat de abstractizare a bazei de date și alte biblioteci. Microframeworks poate fi o alegere excelentă pentru aplicații mai mici, mai concentrate, dezvoltare API sau aplicații în care performanța este mai importantă.
cadrele asincrone sunt axate pe furnizarea de niveluri ridicate de performanță, permițând un număr foarte mare de conexiuni concurente. În timp ce puteți spori semnificativ concurența celor mai multe cadre sincrone prin asocierea lor cu servere capabile de asincron, cum ar fi gevent, cadrele asincrone native merg cu un pas mai departe cu o stivă complet asincronă. În general, cadrele asincrone necesită mai multă rigoare în stilul de programare și au un set mai limitat de pluginuri. Cadrele asincrone sunt excelente atunci când trebuie să oferiți o funcționalitate specifică la un volum foarte mare.
Full-Stack Python cadre
Django
Django este cel mai popular cadru full-stack pentru Python. Are o reputație bine meritată de a fi extrem de productiv atunci când construiește aplicații web complexe. Supranumit „cadrul web pentru perfecționiști cu termene limită”, accentul său este dezvoltarea rapidă, cu opțiuni bine documentate pentru cazuri obișnuite.Django a fost în jur de mai mult de un deceniu (prima lansare în 2006) și este matur, cuprinzător, bine documentat și are o comunitate foarte mare. Este un cadru dogmatic, ceea ce înseamnă că ia o mulțime de decizii pentru Dezvoltator. Pozitivele acestei abordări fac mai rapidă începerea dezvoltării, integrările” binecuvântate ” care funcționează și mai mult spațiu pentru a vă concentra pe nevoile personalizate ale proiectului dvs. în loc de bibliotecile pe care să le utilizați. În plus, proiectele Django tind să arate destul de asemănătoare, ceea ce face mai ușor pentru dezvoltatori să intensifice rapid proiectele care sunt noi pentru ei și pentru echipe să își organizeze eforturile în mod consecvent.
Django oferă o mulțime din cutie, inclusiv propriul mapper-obiect relațional (ORM) pentru lucrul cu baze de date, o abordare standard de autentificare și autorizare, o interfață de administrare generată automat (utilă pentru prototipuri rapide), cache integrat și multe altele.
bun pentru proiecte mici și mari, Django poate fi scalate bine pentru sarcini rezonabile și a fost folosit de multe site-uri cu trafic ridicat, inclusiv Instagram, Mozilla și Washington Post. Django are caracteristici asincrone în versiunea 3.0, cu vizualizări asincrone și middleware viitoare în versiunea 3.1.
în timp ce în mod tradițional axat pe aplicații web full-stack, Django este, de asemenea, foarte potrivit pentru dezvoltarea aplicațiilor backend numai API. Există integrări Mature pentru construirea rapidă a API-urilor REST și GraphQL cu Django.
linia de fund: Standardul de facto pentru un motiv bun, Django este cadrul dominant full-stack pentru Python. Excelent pentru a începe rapid și cu un palmares dovedit pentru scalare, Django este o potrivire excelentă pentru multe proiecte. Dacă preferați să personalizați mai mult decât permite Django, luați în considerare Pyramid și microframeworks. Dacă aveți nevoie de concurență foarte mare, explorați cadrele asincrone.
Piramida
Piramida este un alt cadru popular full-stack. Cu rădăcini în proiectul pilonilor, acesta a fost în dezvoltare atâta timp cât Django și este, de asemenea, o opțiune foarte matură. spre deosebire de Django, Piramida este mai puțin dogmatică. Acesta oferă rutare, renderers, și instrumente de linie de comandă pentru bootstrapping un proiect, dar vă oferă posibilitatea de a alege propriul strat de baze de date, sistem templating, și mai mult printr-un set extins de plugin-uri.
cu flexibilitatea sa fundamentală, Pyramid este o cale de mijloc frumoasă dacă încercați să decideți între un cadru cu stivă completă sau un microframework. Piramida vă permite să începeți mai mici decât Django și să crească complexitatea codebase după cum este necesar. Această flexibilitate în sprijinul bibliotecii poate fi importantă atunci când aveți cerințe specializate sau interfațați puternic cu sisteme pe care Django nu le poate integra cu well (bazele de date moștenite sunt un exemplu comun).
Pyramid are o bază dedicată de fani și o comunitate activă care apreciază natura sa de creștere și flexibilitate fundamentală. Dacă mergeți cu Pyramid, așteptați-vă la o muncă suplimentară pentru a alege componentele în avans. Cu toate acestea, acest lucru poate fi un timp bine petrecut pe termen lung dacă vă permite să accelerați permanent aspecte ale dezvoltării care sunt critice pentru dvs.
linia de fund: un amestec puternic de flexibilitate și control face din Pyramid o alternativă convingătoare la Django pentru unele proiecte.
Web2Py
web2py este un cadru Full-stack, care se concentrează pe ușurința de dezvoltare, cu propriile sale IDE bazate pe web, debugger, și controale de implementare. A fost inspirat de Ruby on Rails și Django și urmează un design MVC (Model View Controller).
proiectul a început ca un instrument de predare și are un accent pe funcționalitatea comună cu valori implicite sensibile. Are o curbă de învățare mult mai ușoară decât majoritatea cadrelor și este extrem de ușor de instalat și de început. Documentația este mare și o mulțime de funcționalitate vine built-in, inclusiv un programator, ajutoare 2FA, și un sistem de ticketing frumos, care devine populat automat de defecte în producție.
web2py are o comunitate mai mică decât Django și alte cadre, dar una foarte prietenoasă. O mulțime de tutoriale și resurse sunt disponibile.
linia de fund: Cel mai potrivit pentru programatori sau Dezvoltatori mai noi care experimentează dezvoltarea web. Nu este o potrivire excelentă pentru noi proiecte comerciale la scară mai mare.
TurboGears
facturat ca „cadrul care scalează cu tine”, TurboGears vă permite să porniți aplicația la fel de simplu ca un singur fișier (cum ar fi un microframework) sau scară tot drumul până la o aplicație full-stack cu instrumente de linie de comandă pentru a sprijini managementul. În acest sens, este similar cu Pyramid, cu beneficiul unui control/Personalizare mai mare în detrimentul necesității mai multor lucrări în avans pentru a determina modul în care doriți să vă structurați aplicația și ce biblioteci doriți să integrați.
ORM implicit pentru TurboGears este SQLAlchemy excelent. TurboGears are diferențe interesante în modul în care se ocupă de rutare și soluția implicită templating. Spre deosebire de majoritatea cadrelor cu stivă completă, rutarea este gestionată printr-o ierarhie de obiecte în loc să mapeze expresii regulate către controlere (maparea este disponibilă ca opțiune alternativă). Sistemul șablon implicit pentru TurboGears este Kajiki, un limbaj inspirat de XSLT.
linia de fund: TurboGears scalează bine cu mult control de la proiecte mici la cele mai mari. Cu toate acestea, Pyramid oferă o gamă similară de flexibilitate și este probabil o alegere mai bună pentru majoritatea oamenilor.
masonit
Masonite este un cadru relativ nou (2017) care are o filozofie de design similară cu Django, dar își propune să îmbunătățească unele puncte comune de durere. Oferă schele de cod îmbunătățite, rutare middleware și suport încorporat pentru trimiterea de e-mailuri, încărcarea S3 și coada.
arhitectura Masonite este foarte extensibilă și capacitățile sale integrate sunt impresionante. Documentația este bună și există un canal activ Slack pentru asistență. Acesta utilizează propriul ORM, Orator, bazat pe ActiveRecord.
ca un cadru mai nou, comunitatea Masonite este mică, dar în creștere. Este îmbunătățit în mod activ și are multe de plăcut. Având în vedere mindshare sale mai mici, este mai greu de a găsi Dezvoltatori familiarizați cu Masonite, dar în cazul în care capacitățile suplimentare out-of-the-box sunt o potrivire bună pentru nevoile dvs. poate accelera dezvoltarea ta.
linia de fund: Un concurent mai nou, Masonite face sarcini comune, cum ar fi gestionarea e-mailului, încărcarea fișierelor în cloud și procesarea plăților ușor din cutie.
Microframeworks pentru Python
Flask
Flask este o soluție incredibil de populară atât pentru aplicațiile web, cât și pentru microservicii. Inițial inspirat de Cadrul Ruby Sinatra, Flask se concentrează pe furnizarea unui set de bază de funcționalitate (manipulare cerere, rutare, conformitate WSGI, templating) și oferă un design modular pentru adăugarea de orice altceva ai nevoie.
ca urmare, pornirea unei aplicații este incredibil de simplă. Puteți construi o aplicație web de lucru în doar câteva rânduri:
from flask import Flask, escape, requestapp = Flask(__name__)@app.route('/')def hello(): name = request.args.get("name", "World") return f'Hello, {escape(name)}!'
Flask are o gamă largă de extensii disponibile, permițându-vă să integreze propriile alegeri pentru stocare, interacțiunea bazei de date, autentificare și autorizare, securitate și mai mult. Va fi nevoie de timp pentru a vă integra și configura alegerile, dar aplicațiile pot fi construite treptat și nu vor include biblioteci și cod pentru lucrurile pe care aplicația dvs. nu le utilizează.
aplicațiile Flask încep de obicei într-un singur fișier, dar pot fi scalate pentru a fi foarte mari. Există modele comune pentru aranjarea aplicațiilor flask, iar flask oferă, de asemenea, planuri ca o modalitate de a face aplicațiile mai mari mai modulare și mai ușor de gestionat.
linia de fund: extrem de flexibil, Flask este mare pentru aplicații web orientate spre utilizator, API-uri și microservicii deopotrivă. Flask este cel mai popular microframelucru pentru Python.
flacon
Bottle are o sintaxă similară cu Flask (de fapt o precede cu un an), dar este distribuită ca un singur fișier fără dependențe în afara bibliotecii standard python. Acest lucru facilitează rularea în orice mediu, inclusiv în locurile în care instalarea bibliotecilor este dificilă. De asemenea, înseamnă că gestionarea dependenței poate fi banală, ceea ce poate fi excelent pentru proiecte mai mici.
from bottle import route, run, template@route('/hello/<name>')def index(name): return template('<b>Hello {{name}}</b>!', name=name)run(host='localhost', port=8080)
setul de caracteristici este destul de similar cu Flask, dar comunitatea activă este mult mai mică. Pluginurile disponibile sunt, de asemenea, mai limitate. În plus, există mai puține tutoriale și poate fi mai greu să găsiți exemple de cod sau să obțineți ajutor.
sticla este cea mai mare parte orientată spre aplicații cu codebases foarte mici și nu are o cale clară pentru scalarea organizare cod ca lucrurile devin complexe. Simplitatea este punctul central. Având mai puține dependențe poate simplifica foarte mult implementarea (doar lipiți bottle.py în directorul de proiect) și veți obține de la un prototip la o aplicație de producție mai repede.
linia de fund: Excelent pentru proiecte personale, aplicații mici sau scenarii de implementare în care gestionarea dependențelor complexe este dificilă.
H3: CherryPy
CherryPy este un alt microframework matur (în jur de 2002) cu fanii proprii. O diferență majoră față de balon și sticlă este că CherryPy este orientat pe obiecte și se concentrează pe a fi cât mai „pitonic” posibil. Cu alte cuvinte, CherryPy își propune să facă scrierea unei aplicații web cât mai asemănătoare cu scrierea codului python general. Să ne uităm la un exemplu:
import cherrypyclass HelloWorld(object): @cherrypy.expose def index(self): return "Hello World!"cherrypy.quickstart(HelloWorld())
puteți vedea că aplicația este definită ca o clasă, spre deosebire de abordarea bazată pe funcții de balon. De asemenea, rutarea în sine este bazată pe obiecte; Decoratorul `@cherrypy` marchează ce metode de obiecte ar trebui transformate în rute, unde în balon decoratorii definesc rutele în sine. Unii dezvoltatori preferă această formă de rutare implicită, în timp ce alții o consideră provocatoare.
unul dintre punctele forte ale CherryPy este serverul său web, care este inclus în cadru. Este rapid, pregătit pentru producție, HTTP/1.1-compatibil, thread-reunite și poate fi utilizat cu orice aplicație Python WSGI. De fapt, unii dezvoltatori folosesc serverul Web CherryPy pentru a rula alte aplicații WSGI (non-CherryPy), deoarece este atât de ușor de configurat și de utilizat.
CherryPy include, de asemenea, o mulțime de funcționalități încorporate, inclusiv gestionarea sesiunii, autentificare, Handlere de conținut static, cache, profilare și multe altele. Plugin-uri sunt disponibile care robinet într-un set bogat de puncte de extensie.comunitatea CherryPy este mult mai mică decât cea a lui Flask, ceea ce înseamnă o comunitate mai mică de pluginuri, mai puține tutoriale etc.
linia de fund: Merită să aruncați o privire dacă preferați un stil de dezvoltare orientat pe obiecte.
șoim
Falcon este un cadru axat pe performanță pentru construirea API-urilor și microserviciilor REST. Având în vedere accentul pus pe viteză, Falcon oferă un set limitat de caracteristici: rutare, middleware, cârlige, manipulare puternică a erorilor/excepțiilor și ajutoare WSGI pentru a facilita testarea unității.
Falcon aruncă orice interes în aplicațiile orientate către utilizator și se concentrează pe servirea JSON prin punctele finale REST. Notați verbul REST (GET) în acest exemplu de cod:
import falconclass QuoteResource: def on_get(self, req, resp): """Handles GET requests""" quote = { 'quote': ( "I've always been more interested in " "the future than in the past." ), 'author': 'Grace Hopper' } resp.media = quoteapi = falcon.API()api.add_route('/quote', QuoteResource())
având în vedere reglarea și focalizarea singulară, Falcon este radical mai rapid (20-75x!) decât Django și Flask în Repere de cereri foarte de bază. Alte aspecte puternice ale Falcon sunt răspunsurile idiomatice la erori HTTP (un punct de durere comun la construirea API-urilor) și gestionarea simplă a excepțiilor. Rulează pe PyPy și acceptă Cython pe CPython, două opțiuni de luat în considerare pentru performanțe maxime.
dacă vă place ideea Falcon, dar doriți o soluție mai completă, aruncați o privire la Hug, un cadru construit deasupra Falcon care adaugă gestionarea versiunilor, documentația automată și validarea automată bazată pe tip.
linia de fund: Dacă doriți să construiți API-uri REST / JSON foarte performante, Falcon poate fi pentru dvs.
cadre asincrone pentru python
Sanic
Sanic este un relativ nou (prima versiune în 2016) cadru web asincron și server, „scris pentru a merge rapid”.
în timp ce majoritatea stivei complete și microframelor de pe această listă există de un deceniu sau mai mult, adăugarea asyncio în Python 3.5+ a deschis ușile unei noi generații de cadre asincrone extrem de performante. Sanic este una dintre opțiunile cele mai stabilite în această nouă generație.
sintaxa Sanic este destul de similară cu Flask, cu adăugarea de suport asincron end-to-end:
from sanic import Sanicfrom sanic.response import jsonapp = Sanic()@app.route("/")async def test(request): return json({"hello": "world"})if __name__ == "__main__": app.run(host="0.0.0.0", port=8000)
dispune de capacități puternice de rutare, middleware, streaming, suport WebSocket, gestionarea cookie-urilor, versiunea rutelor, servirea statică a fișierelor și multe altele. Sanic este o potrivire naturală dacă trebuie să gestionați conexiuni de lungă durată, cum ar fi WebSockets sau aveți nevoie de un nivel ridicat de concurență din API.
cu un cadru asincron, va trebui să vă înfășurați capul în jurul programării asincrone în Python, cu avertismentele, complexitatea și provocările legate de depanare. Merită să vă faceți timp pentru a evalua dacă aveți cu adevărat nevoie de performanța unui API complet asincron, dar dacă o faceți, Sanic merită o privire!
linia de fund: O opțiune matură, stabilită pentru dezvoltarea API-urilor asincrone foarte performante
FastAPI
FastAPI este mai nou decât Sanic (prima lansare la începutul anului 2019), dar câștigă impuls rapid. Excelează la construirea API-urilor REST sau GraphQL și poate gestiona cereri sincrone, cereri asincrone, streaming și websockets.
De asemenea, are suport încorporat pentru autentificare și autorizare, validarea datelor, serializarea JSON și dispune de documentație API automată conform standardului OpenAPI.
from fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root(): return {"Hello": "World"}@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}
setul de caracteristici al FastAPI este cu adevărat impresionant și lovește un loc dulce cu combinația sa de flexibilitate și ușurință în dezvoltare. Este foarte gânditor proiectat și pârghii de tip aluzie și dependență injecție în linii mari pentru a reduce bug-uri în dezvoltare. În plus, documentația FastAPI și suportul editorului sunt excelente.
sintaxa FastAPI este destul de similar cu Flask, ceea ce face o alegere bună dacă sunteți în căutarea de a migra existente Flask codebases la o soluție complet asincron.
linia de fund: Un cadru în creștere, FastAPI merită explorat pentru următorul dvs. proiect asincron.
Starlette
Starlette este un cadru ASGI ușor și un set de instrumente, oferind primitive și integrare modulară pentru a vă permite să vă construiți aplicația cu orice grad de control pe care îl doriți.
ASGI este un succesor al WSGI, oferind o interfață standard între servere web, cadre și aplicații capabile de asincron. Rețineți că ASGI acceptă atât operații sincrone, cât și asincrone, iar ASGI include o implementare de compatibilitate inversă WSGI.ca cadru, Starlette leagă diferitele sale funcții pentru dvs., inclusiv suportul WebSocket, suportul GraphQL, sarcinile de fundal în proces, suportul pentru sesiuni și cookie-uri, CORS, GZip, fișiere statice și multe altele. De asemenea, puteți utiliza fiecare piesă independent, alegând și alegând piese specifice din setul de instrumente.
deoarece Starlette este un set de instrumente în primul rând, utilizarea ca cadru se poate simți mai compozițional, cu preocupări expuse separat:
from starlette.applications import Starlettefrom starlette.responses import JSONResponsefrom starlette.routing import Routeasync def homepage(request): return JSONResponse({'hello': 'world'})app = Starlette(debug=True, routes=)
FastAPI este de fapt construit pe partea de sus a Starlette, adăugând comoditate sintaxă și caracteristici suplimentare. Pentru majoritatea echipelor FastAPI este probabil un loc mai bun pentru a începe, dar Starlette oferă un control maxim și un set puternic de primitive.
linia de fund: Dacă doriți să lucrați aproape de metal pe propriile instrumente asincron, Starlette este un loc minunat pentru a începe.
Tornado
Tornado este un cadru web asincron mai vechi, creat cu mult înainte ca capabilitățile asyncio să fie coapte în Python. Creat inițial de FriendFeed și lansat pentru prima dată în 2009, Tornado este o soluție dovedită pentru scalarea în zeci de mii de conexiuni deschise în Python.
nucleul Tornado este un model de aplicație extrem de personalizabil, cu biblioteci puternice de rețea subiacente. Acesta include rutare, templating, sesiune și cookie management, suport nativ WebSocket, caracteristici de securitate și are o gamă matură de opțiuni pentru diferite datastores. Este mai puțin full-featured decât ceva de genul Django, dar are mult mai multe caracteristici built-in decât un microframework tipic. Tornado folosește metode în stil verb la clasele de gestionare a cererii, deci se pretează la un stil de dezvoltare mai orientat pe obiecte:
import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world")def make_app(): return tornado.web.Application()if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start()
Tornado continuă să fie îmbunătățit și întreținut în mod activ, cu o comunitate robustă. Este folosit de Facebook, Quora și alții în arhitectura lor de producție.
Tornado 6+ folosește asyncio sub capotă și necesită Python 3.5+, dar Tornado 5 poate fi utilizat cu Python 2.7 și mai nou. Rulând pe Python 3.5+, Coroutinele asincrone Tornado folosesc sintaxa nativă ‘async` / ‘wait’. Pentru versiunile anterioare, Tornado oferă o sintaxă generator care are capabilități similare. În special, Tornado are un pod matur pentru Twisted, care vă permite să rulați atât Aplicații răsucite, cât și biblioteci deasupra Tornado.
linia de fund: o soluție dovedită pentru scalarea în număr masiv de cereri concurente, Tornado merită explorată dacă doriți o opțiune stabilită cu o comunitate puternică, sunteți legat de baze de cod mai vechi sau trebuie să utilizați versiuni mai vechi de Python.
ce cadru Web Python este cel mai potrivit pentru tine?
după cum ar trebui să fie clar din această listă, există o mulțime de opțiuni bune. De fapt, există multe alte cadre disponibile pentru Python – am limitat intenționat acest articol doar la cadrele pe care credem că merită să le luăm în considerare în 2020.
un loc bun pentru a începe este criteriile pe care le-am menționat la începutul acestui articol. Care sunt obiectivele tale? Căutați să experimentați ceva nou, să construiți ceva rapid cu tehnologie dovedită sau să învățați noi abilități? Câți oameni vor lucra la baza de cod și cât timp va fi în jur? Acestea sunt toate indicii utile cu privire la alegerea potrivită.
nu există un cadru care să fie perfect pentru toată lumea, dar iată câteva sugestii generale:
- dacă doriți să începeți rapid cu o soluție bine stabilită, unde resursele vor fi ușor de găsit, utilizați Django sau Flask
- dacă vă place să începeți mici și să înțelegeți (sau să controlați) toate piesele aplicației dvs., explorați Pyramid, Flask sau CherryPy
- dacă construiți un API sau un microserviciu care va trebui să fie extrem de performant, uitați-vă la Falcon, fastapi sau sanic.
- dacă sunteți un programator începător sau doar învățați să faceți dezvoltare web, web2py sau Bottle sunt modalități prietenoase și ușoare de a începe
- dacă sunteți în căutarea de a explora cadre up-and-comings cu idei noi și modalități de a face lucrurile, consultați Masonite și FastAPI
ați găsit acest articol util sau ați văzut ceva cu care nu sunteți de acord sau credeți că ar trebui îmbunătățit. Vă rugăm să ne anunțați, apreciem feedback-ul dumneavoastră!