Web frameworks zijn krachtige tools. Ze abstraheren de gemeenschappelijke aspecten van het bouwen van websites en API ‘ s en stellen ons in staat om rijkere, stabielere applicaties te bouwen met minder inspanning.
een breed scala van web frameworks is beschikbaar voor ons in Python. Sommige zijn bewezen favorieten met grote ecosystemen en gemeenschappen. Anderen blinken uit in niche use cases of voor specifieke vormen van ontwikkeling. Toch zijn anderen up-and-comers met dwingende nieuwe redenen om in overweging te worden genomen. Lees verder om de opties te verkennen en te vinden wat het beste voor u werkt.
Als u al weet wat u interesseert, gebruik dan de onderstaande links om vooruit te gaan:
- hoe kiest u het juiste Framework voor uw behoeften
- Full-Stack Frameworks vs. Microframeworks vs. Asynchrone Frameworks
- Python Full-Stack Frameworks
- Microframeworks for Python
- asynchrone Frameworks for Python
- voor welk Python web framework het beste geschikt is jij?
Als u hulp wilt bij het beslissen, kunt u ook direct naar het overzicht van onze aanbevelingen gaan.
- hoe het juiste Framework voor uw behoeften te kiezen
- Full-Stack Frameworks vs.Microframeworks vs. asynchrone Frameworks
- Python Frameworks
- Django
- Piramide
- Web2Py
- TurboGears
- masoniet
- Microframeworks for Python
- kolf
- fles
- H3: CherryPy
- Falcon
- asynchrone frameworks for python
- Sanic
- FastAPI
- Starlette
- Tornado
- welk Python web framework is het beste voor u?
hoe het juiste Framework voor uw behoeften te kiezen
Frameworks zijn ontworpen om verschillende problemen op te lossen en afwegingen te maken om beter hun beoogde doelgroepen te dienen. Als iedereen dezelfde doelen had, hadden we maar één kader nodig! Als u frameworks evalueert, zijn enkele belangrijke overwegingen:
- Wat is de waarschijnlijke uiteindelijke grootte en complexiteit van wat u bouwt?
- kiest u liever uw eigen bibliotheken, configuratie en toepassingsstructuur of wilt u van tevoren een meer samengestelde set opties voor u geselecteerd?
- Hoe belangrijk zijn prestaties voor uw project?
- Hoe snel wilt u uw toepassing kunnen ontwikkelen en implementeren?
- Hoe lang zal uw applicatie bestaan en hoeveel ontwikkelaars zullen er waarschijnlijk aan werken?
daarnaast moet u rekening houden met de kwaliteit van de beschikbare documentatie voor mogelijke keuzes en de grootte van de gemeenschap rond een project – dit heeft invloed op zowel het bereik van bestaande plugins of integraties die u kunt gebruiken om de ontwikkeling sneller te maken en de kans dat u hulp kunt krijgen als u vast komt te zitten.
houd deze aspecten in gedachten als je je opties verkent-er zijn er veel! Afhankelijk van de levensduur van uw project, ook overwegen of een framework is waarschijnlijk met u mee te groeien. Past het goed bij uw toepassing, zowel nu als in de toekomst?
Full-Stack Frameworks vs.Microframeworks vs. asynchrone Frameworks
Python frameworks kan ruwweg worden verdeeld in drie kampen, full-stack frameworks, microframeworks, en asynchrone frameworks.
full-stack frameworks zijn over het algemeen gericht op het bouwen van grotere, full-featured applicaties en bieden een veel voorkomende functionaliteit uit de doos. Als u op zoek bent om iets complex snel te bouwen of wilt redelijke standaardinstellingen voor hoe je een toepassing samen te stellen zonder het maken van alle keuzes zelf, een full-stack framework is een goede keuze. Full-stack frameworks bieden u over het algemeen verstandige standaardwaarden voor het communiceren met databases, het templeren van uw standpunten, het beheren van wachtrijen, achtergrond taken en andere gemeenschappelijke aspecten van grotere toepassingen.
Microframeworks zijn over het algemeen gericht op het leveren van een kleine kern van functionaliteit en nodigen de ontwikkelaar uit om zijn eigen keuzes te maken over welke bibliotheken en technologieën hij wil toevoegen voor andere functionaliteit. Dit heeft als voordeel dat veel meer controle over het ontwerp van de toepassing mogelijk is en kan resulteren in betere prestaties van de toepassing. Ze vereisen meestal dat de ontwikkelaar zijn eigen database-abstractielaag en andere bibliotheken kiest. Microframeworks kan een geweldige keuze zijn voor kleinere, smalere toepassingen, API-ontwikkeling of toepassingen waar prestaties belangrijker zijn.
asynchrone frameworks zijn gericht op het leveren van hoge prestatieniveaus door het toestaan van een zeer groot aantal gelijktijdige verbindingen. Terwijl u de concurrency van de meeste synchrone frameworks aanzienlijk kan stimuleren door ze te koppelen met Async-capabele servers zoals gevent, native asynchrone frameworks gaan een stap verder met een volledig asynchrone stack. Over het algemeen vereisen asynchrone frameworks meer rigor in programmeerstijl en hebben ze een beperktere set plugins. Asynchrone frameworks zijn geweldig wanneer u een specifieke functionaliteit op een zeer hoog volume moet bieden.
Python Frameworks
Django
Django is het meest populaire full-stack framework voor Python. Het heeft een welverdiende reputatie als zeer productief bij het bouwen van complexe web apps. Genoemd “het web framework voor perfectionisten met deadlines”, de focus is snelle ontwikkeling met goed gedocumenteerde opties voor veel voorkomende gevallen.
Django bestaat al meer dan een decennium (eerste release in 2006) en het is volwassen, uitgebreid, goed gedocumenteerd en heeft een zeer grote gemeenschap. Het is een eigenzinnig kader, wat betekent dat het veel beslissingen neemt voor de ontwikkelaar. Positieve punten van deze aanpak maken het sneller om te beginnen met de ontwikkeling, “gezegende” integraties die gewoon werken, en meer headspace om zich te concentreren op de aangepaste behoeften van uw project in plaats van welke bibliotheken te gebruiken. Bovendien, Django projecten hebben de neiging om vrij vergelijkbaar te kijken, waardoor het makkelijker voor ontwikkelaars om snel op te voeren op projecten die nieuw zijn voor hen en voor teams om hun inspanningen consequent te organiseren.
Django biedt veel out of the box, waaronder zijn eigen object-relationele mapper (ORM) voor het werken met databases, een standaard benadering van authenticatie en autorisatie, een automatisch gegenereerde admin interface (handig voor rapid prototyping), geà ntegreerde caching en meer.
goed voor kleine en grote projecten, Django kan goed worden geschaald voor redelijke belastingen en is gebruikt door veel veel verkeer sites, waaronder Instagram, Mozilla, en de Washington Post. Django heeft asynchrone functies in versie 3.0, met Async-weergaven en middleware in versie 3.1.
hoewel Django traditioneel gericht is op full-stack webapplicaties, is Django ook zeer geschikt voor het ontwikkelen van API-only backend applicaties. Volwassen integraties bestaan voor het snel bouwen van zowel REST en GraphQL API ‘ s met Django.
Bottom line: De de-facto standaard voor goede reden, Django is de dominante full-stack framework voor Python. Uitstekend om snel aan de slag te gaan en met een bewezen track record voor schalen, is Django een geweldige pasvorm voor vele projecten. Als je liever meer aanpast dan Django toelaat, overweeg dan Pyramid en de microframeworks. Als u zeer hoge concurrency nodig hebt, verken de asynchrone frameworks.
Piramide
Pyramid is een andere populaire full-stack framework. Met wortels in het Pylons project, is het al in ontwikkeling zo lang als Django en is ook een zeer volwassen optie.
In tegenstelling tot Django is Pyramid minder eigenwijs. Het biedt routing, renderers en command-line tools voor het bootstrappen van een project, maar biedt u de mogelijkheid om uw eigen database laag te kiezen, templating systeem, en meer via een uitgebreide set van plugins.
met zijn fundamentele flexibiliteit is Pyramid een mooie middenweg als je probeert te kiezen tussen een full-stack framework of een microframework. Pyramid kunt u kleiner dan Django beginnen en groeien de complexiteit van uw codebase als dat nodig is. Deze flexibiliteit in bibliotheekondersteuning kan belangrijk zijn wanneer je gespecialiseerde vereisten hebt of intensief interfaces hebt met systemen waarmee Django mogelijk niet goed kan integreren (legacy databases zijn een algemeen voorbeeld).
Pyramid heeft een toegewijde fanbase en een actieve gemeenschap die zijn grow-as-you-go karakter en fundamentele flexibiliteit waarderen. Als je gaat met Pyramid, verwachten extra werk om componenten vooraf te kiezen. Echter, dit kan tijd goed besteed op de lange termijn als het u toelaat om permanent te versnellen aspecten van de ontwikkeling die van cruciaal belang zijn voor u.
Bottom line: een krachtige mix van flexibiliteit en controle maakt Pyramid een overtuigend alternatief voor Django voor sommige projecten.
Web2Py
web2py is een full-stack framework dat zich richt op het gemak van ontwikkeling, met zijn eigen web-based IDE, debugger, en deployment controles. Het is geïnspireerd door Ruby on Rails en Django en volgt een MVC (Model View Controller) ontwerp.
het project is gestart als een leermiddel en heeft de nadruk op gemeenschappelijke functionaliteit met verstandige standaardwaarden. Het heeft een veel eenvoudiger leercurve dan de meeste frameworks en is zeer eenvoudig te installeren en aan de slag met. Documentatie is geweldig en veel functionaliteit is ingebouwd, waaronder een scheduler, 2FA helpers en een mooi ticketing systeem dat automatisch wordt bevolkt door defecten in de productie.
web2py heeft een kleinere gemeenschap dan Django en enkele andere frameworks, maar een zeer vriendelijke. Veel tutorials en middelen zijn beschikbaar.
Bottom line: Het meest geschikt voor nieuwere programmeurs of ontwikkelaars experimenteren met web development. Niet geschikt voor nieuwe grootschalige commerciële projecten.
TurboGears
gefactureerd als het “framework dat schaalt met u”, TurboGears kunt u uw toepassing te starten zo eenvoudig als een enkel bestand (zoals een microframework) of schalen helemaal tot een full-stack app met command-line tools ter ondersteuning van het beheer. In deze zin, het is vergelijkbaar met Pyramid, met het voordeel van meer controle/maatwerk ten koste van het vereisen van meer werk vooraf om te bepalen hoe u uw app wilt structureren en welke bibliotheken u wilt integreren.
De standaard ORM voor TurboGears is de uitstekende SQLAlchemy. TurboGears heeft interessante verschillen in hoe het routing en de standaard templating oplossing behandelt. In tegenstelling tot de meeste full-stack frameworks, wordt routing afgehandeld via een objecthiërarchie in plaats van het toewijzen van reguliere expressies aan controllers (toewijzing is beschikbaar als een alternatieve optie). Het standaard template systeem voor TurboGears is Kajiki, een XSLT-geïnspireerde taal.
Bottom line: TurboGears schaalt goed met veel controle van kleine projecten naar grotere. Pyramid biedt echter een vergelijkbaar scala aan flexibiliteit en is waarschijnlijk een betere keuze voor de meeste mensen.
masoniet
Masonite is een relatief nieuw (2017) raamwerk dat een soortgelijke ontwerpfilosofie heeft als Django, maar gericht is op het verbeteren van enkele veelvoorkomende pijnpunten. Het biedt verbeterde code scaffolding, routing middleware, en ingebouwde ondersteuning voor e-mail verzenden, S3 uploaden, en wachtrij.de architectuur van
Masonite is zeer uitbreidbaar en de geïntegreerde mogelijkheden zijn indrukwekkend. Documentatie is goed en er is een actief Slack kanaal voor ondersteuning. Het maakt gebruik van zijn eigen ORM, Orator, gebaseerd op ActiveRecord.
als een nieuwer raamwerk is de gemeenschap van Masonite klein maar groeiend. Het is actief verbeterd en heeft veel te houden. Gezien de kleinere mindshare, is het moeilijker om ontwikkelaars bekend met Masonite vinden, maar als de extra out-of-the-box mogelijkheden zijn een goede pasvorm voor uw behoeften kan het versnellen van uw ontwikkeling.
Bottom line: een nieuwere deelnemer, Masonite maakt veelvoorkomende taken zoals e-mailbeheer, het uploaden van bestanden naar de cloud en het verwerken van betalingen eenvoudig uit de doos.
Microframeworks for Python
kolf
Flask is een ongelooflijk populaire oplossing voor zowel web apps en microservices. Oorspronkelijk geà nspireerd door de Ruby framework Sinatra, kolf richt zich op het verstrekken van een kernset van functionaliteit (verzoek afhandeling, routing, WSGI compliance, templating) en biedt een modulair ontwerp voor de toevoeging van iets anders dat je nodig hebt.
als gevolg hiervan is het starten van een toepassing ongelooflijk eenvoudig. U kunt een werkende webtoepassing bouwen in slechts een paar regels:
from flask import Flask, escape, requestapp = Flask(__name__)@app.route('/')def hello(): name = request.args.get("name", "World") return f'Hello, {escape(name)}!'
Flask heeft een breed scala aan beschikbare extensies, waardoor u uw eigen keuzes kunt integreren voor opslag, interactie met de database, authenticatie en autorisatie, beveiliging en meer. Het kost tijd om je keuzes te integreren en in te stellen, maar apps kunnen stapsgewijs worden gebouwd en bevatten geen bibliotheken en code voor dingen die je applicatie niet gebruikt.
Flask-apps starten meestal in een enkel bestand, maar kunnen worden geschaald tot zeer groot. Er zijn gemeenschappelijke patronen voor het regelen van kolf apps en kolf biedt ook blauwdrukken als een manier om grotere toepassingen meer modulair en beheersbaar te maken.
Bottom line: extreem flexibel, Flask is ideaal voor gebruikersgerichte web apps, API ‘ s en microservices gelijk. Kolf is het meest populaire microframework voor Python.
fles
fles heeft een soortgelijke syntaxis als kolf (het is eigenlijk een jaar ouder dan deze), maar wordt gedistribueerd als een enkel bestand zonder afhankelijkheden buiten de python standaardbibliotheek. Dit maakt het eenvoudig om te draaien in elke omgeving, inclusief plaatsen waar het installeren van bibliotheken moeilijk is. Het betekent ook dat afhankelijkheidsbeheer triviaal kan zijn, wat geweldig kan zijn voor kleinere projecten.
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)
De feature set is vergelijkbaar met Flask, maar de actieve community is veel kleiner. De beschikbare plugins zijn ook beperkter. Daarnaast zijn er minder tutorials en kan het moeilijker zijn om code voorbeelden te vinden of hulp te krijgen.
Bottle is meestal gericht op apps met zeer kleine codebases en heeft geen duidelijk pad voor het schalen van code organisatie als dingen complex worden. Eenvoud staat centraal. Het hebben van minder afhankelijkheden kan de implementatie veel vereenvoudigen (gewoon vasthouden bottle.py in uw project directory) en krijg je van een prototype naar een productie-app sneller.
Bottom line: Ideaal voor persoonlijke projecten, kleine apps of implementatiescenario ‘ s waarbij het beheren van complexe afhankelijkheden moeilijk is.
H3: CherryPy
CherryPy is een ander volwassen microframework (sinds 2002) met eigen fans. Een belangrijk verschil met kolf en fles is dat CherryPy is object-georiënteerd en richt zich op het zijn zo “pythonic” mogelijk. Anders gezegd, CherryPy is bedoeld om het schrijven van een web app zo vergelijkbaar met het schrijven van algemene python code mogelijk te maken. Laten we eens kijken naar een voorbeeld:
import cherrypyclass HelloWorld(object): @cherrypy.expose def index(self): return "Hello World!"cherrypy.quickstart(HelloWorld())
u kunt zien dat de app is gedefinieerd als een klasse, in tegenstelling tot de functie-gebaseerde aanpak van Flask. Ook de routing zelf is object-based; de` @cherrypy ‘ decorateur markeert welke object methoden moeten worden omgezet in routes, waarbij in kolf de decorateurs zelf bepalen de routes. Sommige ontwikkelaars geven de voorkeur aan deze vorm van impliciete routing, terwijl anderen het uitdagend vinden.
een van CherryPy ‘ s sterke punten is de webserver, die is gebundeld in het framework. Het is snel, productie-klaar, HTTP / 1.1-compliant, thread-gepoolde en kan worden gebruikt met elke Python WSGI applicatie. In feite gebruiken sommige ontwikkelaars CherryPy ‘ s webserver om andere (niet-CherryPy) WSGI-apps uit te voeren, omdat het zo eenvoudig is op te zetten en te gebruiken.
CherryPy bevat ook veel ingebouwde functionaliteit, waaronder sessiebeheer, authenticatie, statische inhoud handlers, caching, profilering en meer. Plug-ins zijn beschikbaar die tappen in een rijke set van uitbreidingspunten.
de gemeenschap van CherryPy is veel kleiner dan die van Flask, wat een kleinere gemeenschap van plugins betekent, minder tutorials, enz.
Bottom line: Een kijkje waard als u liever een object-georiënteerde ontwikkelingsstijl.
Falcon
Falcon is een performance-gericht framework voor het bouwen van REST API ‘ s en microservices. Gezien de focus op snelheid, Falcon biedt een beperkte feature set: routing, middleware, hooks, sterke fout/uitzondering behandeling, en WSGI helpers om unit testen eenvoudig te maken.
Falcon werpt enige interesse in gebruikersgerichte apps en richt zich op het dienen van JSON via REST endpoints. Let op het REST werkwoord (GET) in dit code voorbeeld:
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())
gezien zijn tuning en enkelvoud focus, is Falcon radicaal sneller (20-75x!) dan Django en Flask in benchmarks van zeer fundamentele Verzoeken. Andere sterke aspecten van Falcon zijn idiomatische HTTP error responses (een veel voorkomend pijnpunt bij het maken van API ‘ s) en eenvoudige afhandeling van uitzonderingen. Het draait op PyPy en ondersteunt Cython op CPython, twee opties om te overwegen voor maximale prestaties.
als u het idee van Falcon leuk vindt, maar een meer volledige oplossing wilt, kijk dan eens naar Hug, een framework dat bovenop Falcon is gebouwd en versiebeheer, automatische documentatie en automatische validatie door type-driven toevoegt.
Bottom line: Als u zeer performante REST/JSON API ‘ s wilt bouwen, kan Falcon iets voor u zijn.
asynchrone frameworks for python
Sanic
Sanic is een relatief nieuwe (eerste release in 2016) asynchrone web framework en server, “geschreven om snel te gaan”.
hoewel de meeste full-stack en microframeworks op deze lijst al een decennium of meer bestaan, heeft de toevoeging van asyncio in Python 3.5+ de deuren geopend voor een hele nieuwe generatie van zeer performante asynchrone frameworks. Sanic is een van de meest gevestigde opties in deze nieuwe generatie.
Sanic ‘ s syntaxis is vrij vergelijkbaar met kolf, met de toevoeging van end-to-end async ondersteuning:
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)
Het beschikt over sterke routing mogelijkheden, middleware, streaming, WebSocket ondersteuning, cookie management, route versioning, statische file serving en meer. Sanic is een natuurlijke pasvorm als je nodig hebt om langlevende verbindingen zoals WebSockets te behandelen of een hoog niveau van concurrency uit uw API.
met een asynchrone framework, moet je je hoofd rond asynchrone programmering wikkelen in Python, met zijn gerelateerde voorbehouden, complexiteit en debugging uitdagingen. Het is de moeite waard om de tijd te nemen om te beoordelen of je echt de prestaties van een volledig async API nodig hebt, maar als je dat doet, Sanic is een kijkje waard!
Bottom line: Een volwassen, gevestigde optie voor het ontwikkelen van hoog presterende asynchrone API ‘ s
FastAPI
fastapi is nieuwer dan Sanic (eerste release begin 2019) maar wint snel aan kracht. Het blinkt uit in het bouwen van rust of GraphQL API ‘ s, en kan omgaan met synchrone Verzoeken, asynchrone Verzoeken, streaming en websockets.
het heeft ook ingebouwde ondersteuning voor authenticatie en autorisatie, gegevensvalidatie, JSON-serialisatie en beschikt over automatische API-documentatie volgens de OpenAPI-standaard.
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}
De feature set van FastAPI is echt indrukwekkend en het raakt een sweet spot met zijn combinatie van flexibiliteit en gemak van ontwikkeling. Het is zeer zorgvuldig ontworpen en maakt gebruik van type hinting en afhankelijkheid injectie in grote lijnen bugs in de ontwikkeling te verminderen. Daarnaast zijn de documentatie en editorondersteuning van FastAPI uitstekend.de syntaxis van
fastapi is vergelijkbaar met Flask, wat het een goede keuze maakt als u bestaande Flask-codebases wilt migreren naar een volledig async-oplossing.
Bottom line: Een framework on the rise, fastapi is de moeite waard om te verkennen voor uw volgende async-project.
Starlette
Starlette is een lichtgewicht ASGI framework en toolkit, het verstrekken van Primitieven en modulaire integratie om u te laten bouwen van uw applicatie met elke mate van controle die u wilt.
ASGI is een opvolger van WSGI, die een standaard interface biedt tussen Async-geschikte webservers, frameworks en toepassingen. Merk op dat ASGI zowel synchrone als asynchrone bewerkingen ondersteunt en dat ASGI een WSGI backward-compatibility implementatie bevat.
als een framework verbindt Starlette zijn verschillende functies voor u, waaronder WebSocket ondersteuning, GraphQL ondersteuning, in-process achtergrond taken, sessie en cookie ondersteuning, CORS, GZip, statische bestanden, en meer. U kunt elk stuk ook onafhankelijk gebruiken, het plukken en kiezen van specifieke stukken van de toolkit.
aangezien Starlette als eerste een toolkit is, kan het gebruik als framework meer compositorisch aanvoelen, waarbij problemen apart worden belicht:
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 is eigenlijk gebouwd op Starlette, waardoor syntaxisgemak en extra functies worden toegevoegd. Voor de meeste teams is FastAPI waarschijnlijk een betere plek om te beginnen, maar Starlette biedt maximale controle en een krachtige set primitieven.
Bottom line: als je dicht bij het metaal wilt werken met je eigen Async tools, is Starlette een geweldige plek om te beginnen.
Tornado
Tornado is een ouder Async web framework, gemaakt lang voordat asyncio mogelijkheden werden gebakken in Python. Oorspronkelijk gemaakt door FriendFeed en voor het eerst uitgebracht in 2009, Tornado is een bewezen oplossing voor het schalen in tienduizenden open verbindingen in Python.
De kern van Tornado is een zeer aanpasbaar applicatie model met sterke onderliggende netwerkbibliotheken. Het omvat routing, templating, sessie-en cookiebeheer, native WebSocket-ondersteuning, beveiligingsfuncties en heeft een volwassen scala aan opties voor verschillende datastores. Het is minder full-featured dan iets als Django, maar heeft veel meer functies ingebouwd dan een typische microframework. Tornado gebruikt werkwoord – stijl methoden op verzoek handler klassen, dus het leent zich voor een meer object-georiënteerde ontwikkeling stijl:
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 blijft actief worden verbeterd en onderhouden, met een robuuste gemeenschap. Het wordt gebruikt door Facebook, Quora, en anderen in hun productie-architectuur.
Tornado 6 + gebruikt asyncio onder de motorkap en vereist Python 3.5+, maar Tornado 5 kan worden gebruikt met Python 2.7 en nieuwer. Draaiend op Python 3.5+, gebruiken Tornado asynchrone coroutines de native` async ` / ` await ‘ syntaxis. Voor eerdere versies, Tornado biedt een generator syntaxis die soortgelijke mogelijkheden heeft. Met name, Tornado heeft een volwassen brug voor Twisted, waarmee u zowel Twisted apps en bibliotheken draaien op de top van Tornado.
Bottom line: een bewezen oplossing voor het schalen naar een groot aantal gelijktijdige verzoeken, Tornado is het onderzoeken waard als u een gevestigde optie wilt met een sterke Gemeenschap, gebonden bent aan oudere codebases of oudere versies van Python moet gebruiken.
welk Python web framework is het beste voor u?
zoals uit deze lijst duidelijk zou moeten zijn, zijn er veel goede opties. In feite zijn er vele andere frameworks beschikbaar voor Python-we hebben dit artikel opzettelijk beperkt tot alleen de frameworks waarvan we denken dat ze het meest de moeite waard zijn om te overwegen in 2020.
een goede plek om te beginnen zijn de criteria die we aan het begin van dit artikel hebben genoemd. Wat zijn je doelen? Ben je op zoek om te experimenteren met iets nieuws, snel iets te bouwen met bewezen technologie, of nieuwe vaardigheden te leren? Hoeveel mensen zullen werken aan uw codebase en hoe lang zal het rond? Dit zijn allemaal nuttige aanwijzingen over de juiste keuze.
Er is geen raamwerk dat perfect is voor iedereen, maar hier zijn enkele algemene suggesties:
- Als u snel aan de slag wilt met een gevestigde oplossing waar resources gemakkelijk te vinden zijn, gebruik Django of Flask
- Als u graag klein wilt beginnen en alle stukken van uw applicatie wilt begrijpen (of controleren), ontdek Pyramid, Flask of CherryPy
- Als u een API of microservice bouwt die zeer goed moet presteren, kijk dan in Falcon, fastapi of sanic.
- als u een beginnende programmeur bent of net leert webontwikkeling te doen, zijn web2py of Bottle vriendelijke, eenvoudige manieren om aan de slag te gaan
- Als u op zoek bent naar up-and-comings frameworks met nieuwe ideeën en manieren om dingen te doen, check out Masonite en FastAPI
vond u dit artikel nuttig of zag u iets waar u het niet mee eens bent of denkt dat het verbeterd moet worden. Laat het ons weten, wij waarderen uw feedback!