Maybaygiare.org

Blog Network

Die beliebtesten Python-Web-Frameworks im Jahr 2021

Matt Sanders am 02. Juli 2020

Web-Frameworks sind leistungsstarke Tools. Sie abstrahieren die gemeinsamen Aspekte beim Erstellen von Websites und APIs und ermöglichen es uns, mit weniger Aufwand umfangreichere, stabilere Anwendungen zu erstellen.

Eine breite Palette von Web-Frameworks steht uns in Python zur Verfügung. Einige sind bewährte Favoriten mit großen Ökosystemen und Gemeinschaften. Andere zeichnen sich in Nischenanwendungsfällen oder für bestimmte Arten der Entwicklung aus. Immer noch, andere sind up-and-comers mit zwingenden neuen Gründen in Betracht gezogen werden. Lesen Sie weiter, um die Optionen zu erkunden und herauszufinden, was für Sie am besten geeignet ist.

Wenn Sie bereits wissen, was Sie interessiert, verwenden Sie die folgenden Links, um fortzufahren:

  • So wählen Sie das richtige Framework für Ihre Anforderungen aus
  • Full-Stack-Frameworks vs. Microframeworks vs. Asynchrone Frameworks
  • Python-Full-Stack-Frameworks
  • Microframeworks für Python
  • Asynchrone Frameworks für Python
  • Welches Python-Webframework ist das Beste für Sie?

Wenn Sie Hilfe bei der Entscheidung wünschen, können Sie auch direkt zu unserer Empfehlungsübersicht springen.

So wählen Sie das richtige Framework für Ihre Bedürfnisse aus

Frameworks wurden entwickelt, um verschiedene Probleme zu lösen und Kompromisse einzugehen, um das beabsichtigte Publikum besser zu bedienen. Wenn alle die gleichen Ziele hätten, bräuchten wir nur ein Framework! Während Sie Frameworks evaluieren, sind einige wichtige Überlegungen:

  • Was ist die wahrscheinliche Größe und Komplexität dessen, was Sie erstellen?
  • Bevorzugen Sie es, Ihre eigenen Bibliotheken, Konfigurations- und Anwendungsstrukturen auszuwählen, oder möchten Sie eine kuratierte Auswahl an Optionen, die im Voraus für Sie ausgewählt werden?
  • Wie wichtig wird Performance für Ihr Projekt sein?
  • Wie schnell möchten Sie Ihre Anwendung entwickeln und bereitstellen können?
  • Wie lange wird es Ihre Anwendung geben und wie viele Entwickler werden wahrscheinlich daran arbeiten?

Berücksichtigen Sie außerdem die Qualität der verfügbaren Dokumentation für mögliche Entscheidungen und die Größe der Community rund um ein Projekt – dies wirkt sich sowohl auf die Anzahl der vorhandenen Plugins oder Integrationen aus, die Sie nutzen können, um die Entwicklung zu beschleunigen, als auch auf die Wahrscheinlichkeit, dass Sie Hilfe erhalten, wenn Sie nicht weiterkommen.

Denken Sie an diese Aspekte, wenn Sie Ihre Optionen erkunden – es gibt viele davon! Abhängig von der Langlebigkeit Ihres Projekts sollten Sie auch überlegen, ob ein Framework wahrscheinlich mit Ihnen wächst. Passt es jetzt und in Zukunft gut zu Ihrer Anwendung?

Full-Stack-Frameworks vs. Microframeworks vs. Asynchrone Frameworks

Python-Frameworks können grob in drei Lager unterteilt werden: Full-Stack-Frameworks, Microframeworks und asynchrone Frameworks. Full-Stack-Frameworks konzentrieren sich im Allgemeinen auf die Erstellung größerer, voll ausgestatteter Anwendungen und bieten viele gängige Funktionen. Wenn Sie schnell etwas Komplexes erstellen möchten oder vernünftige Standardeinstellungen für das Zusammenstellen einer Anwendung wünschen, ohne alle Entscheidungen selbst treffen zu müssen, ist ein Full-Stack-Framework eine gute Wahl. Full-Stack-Frameworks bieten Ihnen im Allgemeinen sinnvolle Standardeinstellungen für die Kommunikation mit Datenbanken, die Erstellung von Vorlagen für Ihre Ansichten, die Verwaltung von Warteschlangen, Hintergrundaufträgen und anderen allgemeinen Aspekten größerer Anwendungen.Microframeworks konzentrieren sich im Allgemeinen auf die Bereitstellung eines kleinen Funktionskerns und laden den Entwickler ein, seine eigenen Entscheidungen darüber zu treffen, welche Bibliotheken und Technologien für andere Funktionen hinzugefügt werden sollen. Dies hat den Vorteil, dass es viel mehr Kontrolle über das Anwendungsdesign ermöglicht und zu einer besseren Anwendungsleistung führen kann. Sie erfordern normalerweise, dass der Entwickler seine eigene Datenbankabstraktionsschicht und andere Bibliotheken auswählt. Microframeworks kann eine gute Wahl für kleinere, eng fokussierte Anwendungen, API-Entwicklung oder Anwendungen sein, bei denen Leistung wichtiger ist.

Asynchrone Frameworks konzentrieren sich auf die Bereitstellung eines hohen Leistungsniveaus, indem sie eine sehr große Anzahl gleichzeitiger Verbindungen ermöglichen. Während Sie die Parallelität der meisten synchronen Frameworks erheblich steigern können, indem Sie sie mit Asynchron-fähigen Servern wie gevent koppeln, gehen nativ asynchrone Frameworks mit einem vollständig asynchronen Stack noch einen Schritt weiter. Im Allgemeinen erfordern asynchrone Frameworks mehr Strenge im Programmierstil und verfügen über einen eingeschränkteren Satz von Plugins. Asynchrone Frameworks eignen sich hervorragend, wenn Sie eine bestimmte Funktionalität mit einem sehr hohen Volumen bereitstellen müssen.

Vollständige Python-Frameworks

Django

Django.jpeg

Django ist das beliebteste Full-Stack-Framework für Python. Es hat den wohlverdienten Ruf, beim Erstellen komplexer Web-Apps sehr produktiv zu sein. Als „das Web-Framework für Perfektionisten mit Terminen“ bezeichnet, liegt der Fokus auf einer schnellen Entwicklung mit gut dokumentierten Optionen für häufige Fälle.Django gibt es seit mehr als einem Jahrzehnt (erste Veröffentlichung 2006) und es ist ausgereift, umfassend, gut dokumentiert und hat eine sehr große Community. Es ist ein opinionated Framework, was bedeutet, dass es viele Entscheidungen für den Entwickler trifft. Positive Aspekte dieses Ansatzes sind der schnellere Start der Entwicklung, „gesegnete“ Integrationen, die einfach funktionieren, und mehr Freiraum, um sich auf die benutzerdefinierten Anforderungen Ihres Projekts zu konzentrieren, anstatt die zu verwendenden Bibliotheken. Darüber hinaus sehen Django-Projekte in der Regel ziemlich ähnlich aus, was es Entwicklern erleichtert, Projekte, die für sie neu sind, schnell hochzufahren und Teams ihre Bemühungen konsistent zu organisieren.Django bietet eine Menge Out-of-the-Box, einschließlich eines eigenen objektrelationalen Mappers (ORM) für die Arbeit mit Datenbanken, eines Standardansatzes für Authentifizierung und Autorisierung, einer automatisch generierten Administrationsoberfläche (hilfreich für Rapid Prototyping), integriertem Caching und mehr.Django eignet sich gut für kleine und große Projekte, kann gut für angemessene Lasten skaliert werden und wurde von vielen stark frequentierten Websites wie Instagram, Mozilla und der Washington Post verwendet. Django hat asynchrone Funktionen in Version 3.0, mit asynchronen Ansichten und Middleware in Version 3.1.

Django konzentriert sich traditionell auf Full-Stack-Webanwendungen und eignet sich auch gut für die Entwicklung von API-Backend-Anwendungen. Es gibt ausgereifte Integrationen zum schnellen Erstellen von REST- und GraphQL-APIs mit Django.

Fazit: Der De-facto-Standard Aus gutem Grund ist Django das dominierende Full-Stack-Framework für Python. Django eignet sich hervorragend für den schnellen Einstieg und mit einer nachgewiesenen Erfolgsbilanz bei der Skalierung. Wenn Sie mehr anpassen möchten, als Django zulässt, sollten Sie Pyramid und die Microframeworks in Betracht ziehen. Wenn Sie eine sehr hohe Parallelität benötigen, erkunden Sie die asynchronen Frameworks.

Pyramide

Pyramide.jpg

Pyramid ist ein weiteres beliebtes Full-Stack-Framework. Mit Wurzeln im Pylons-Projekt befindet es sich seit Django in der Entwicklung und ist auch eine sehr ausgereifte Option.

Im Gegensatz zu Django ist Pyramid weniger eigensinnig. Es bietet Routing, Renderer und Befehlszeilentools zum Bootstrapping eines Projekts, bietet Ihnen jedoch die Möglichkeit, über einen umfangreichen Satz von Plugins Ihre eigene Datenbankschicht, ein Vorlagensystem und mehr auszuwählen.

Mit seiner grundlegenden Flexibilität ist Pyramid ein guter Mittelweg, wenn Sie sich zwischen einem Full-Stack-Framework oder einem Microframework entscheiden möchten. Pyramid ermöglicht es Ihnen, kleiner als Django zu starten und die Komplexität Ihrer Codebasis nach Bedarf zu erhöhen. Diese Flexibilität bei der Bibliotheksunterstützung kann wichtig sein, wenn Sie spezielle Anforderungen haben oder stark mit Systemen verbunden sind, in die Django möglicherweise nicht gut integriert ist (ältere Datenbanken sind ein häufiges Beispiel).

Pyramid hat eine engagierte Fangemeinde und eine aktive Community, die seine Grow-as-you-Go-Natur und grundlegende Flexibilität zu schätzen wissen. Wenn Sie mit Pyramid gehen, erwarten Sie zusätzliche Arbeit, um Komponenten im Voraus auszuwählen. Dies kann jedoch auf lange Sicht gut investierte Zeit sein, wenn Sie damit für Sie kritische Aspekte der Entwicklung dauerhaft beschleunigen können.Fazit: Eine leistungsstarke Mischung aus Flexibilität und Kontrolle macht Pyramid für einige Projekte zu einer überzeugenden Alternative zu Django.

Web2Py

web2py.jpeg

web2py ist ein Full-Stack-Framework, das sich auf einfache Entwicklung konzentriert, mit einer eigenen webbasierten IDE, einem Debugger und Bereitstellungssteuerelementen. Es wurde von Ruby on Rails und Django inspiriert und folgt einem MVC-Design (Model View Controller).

Das Projekt begann als Lehrmittel und hat einen Schwerpunkt auf gemeinsame Funktionalität mit vernünftigen Vorgaben. Es hat eine viel einfachere Lernkurve als die meisten Frameworks und ist extrem einfach zu installieren und zu beginnen. Die Dokumentation ist großartig und viele Funktionen sind integriert, darunter ein Scheduler, 2FA-Helfer und ein nettes Ticketing-System, das automatisch mit Fehlern in der Produktion gefüllt wird.

web2py hat eine kleinere Community als Django und einige andere Frameworks, aber eine sehr freundliche. Viele Tutorials und Ressourcen stehen zur Verfügung.

Fazit: Am besten geeignet für neuere Programmierer oder Entwickler, die mit Webentwicklung experimentieren. Nicht gut geeignet für neue größere kommerzielle Projekte.

TurboGears

turbogears.jpg

Turbogears wird als „Framework, das mit Ihnen skaliert“ bezeichnet und ermöglicht es Ihnen, Ihre Anwendung so einfach wie eine einzelne Datei (wie ein Mikroframework) zu starten oder bis zu einer Full-Stack-App mit Befehlszeilentools zur Unterstützung der Verwaltung zu skalieren. In diesem Sinne ähnelt es Pyramid, mit dem Vorteil von mehr Kontrolle / Anpassung auf Kosten von mehr Arbeit im Voraus, um zu bestimmen, wie Sie Ihre App strukturieren und welche Bibliotheken Sie integrieren möchten.

Die Standard-ORM für TurboGears ist die ausgezeichnete SQLAlchemy. TurboGears weist interessante Unterschiede im Umgang mit Routing und seiner Standardvorlagenlösung auf. Im Gegensatz zu den meisten Full-Stack-Frameworks wird das Routing über eine Objekthierarchie abgewickelt, anstatt reguläre Ausdrücke Controllern zuzuordnen (Mapping ist als alternative Option verfügbar). Das Standard-Template-System für TurboGears ist Kajiki, eine XSLT-inspirierte Sprache.

Fazit: TurboGears lässt sich mit viel Kontrolle von kleinen bis zu größeren Projekten gut skalieren. Pyramid bietet jedoch eine ähnliche Flexibilität und ist wahrscheinlich die bessere Wahl für die meisten Menschen.

Masonite

masonite.jpg

Masonite ist ein relativ neues (2017) Framework, das eine ähnliche Designphilosophie wie Django hat, aber darauf abzielt, einige häufige Probleme zu verbessern. Es bietet erweitertes Code-Scaffolding, Routing-Middleware und integrierte Unterstützung für E-Mail-Versand, S3-Upload und Warteschlangen.

Masonite’s Architektur ist sehr erweiterbar und seine integrierten Fähigkeiten sind beeindruckend. Die Dokumentation ist gut und es gibt einen aktiven Slack-Kanal für den Support. Es verwendet ein eigenes ORM, Orator, basierend auf ActiveRecord.

Als neueres Framework ist Masonite’s Community klein, wächst aber. Es wird aktiv verbessert und hat viel zu mögen. Angesichts seines kleineren Mindshare ist es schwieriger, Entwickler zu finden, die mit Masonite vertraut sind, aber wenn die zusätzlichen Out-of-the-Box-Funktionen gut zu Ihren Anforderungen passen, kann dies Ihre Entwicklung beschleunigen.Fazit: Masonite, ein neuerer Anwärter, macht gängige Aufgaben wie das E-Mail-Management, das Hochladen von Dateien in die Cloud und die Zahlungsabwicklung einfach.

Microframeworks für Python

Flasche

Flasche.png

Flask ist eine unglaublich beliebte Lösung für Web-Apps und Microservices. Ursprünglich vom Ruby-Framework Sinatra inspiriert, konzentriert sich Flask auf die Bereitstellung eines Kernsatzes von Funktionen (Anforderungsbehandlung, Routing, WSGI-Compliance, Templating) und bietet ein modulares Design für das Hinzufügen von allem, was Sie benötigen.

Infolgedessen ist das Starten einer Anwendung unglaublich einfach. Sie können eine funktionierende Webanwendung in nur wenigen Zeilen erstellen:

from flask import Flask, escape, requestapp = Flask(__name__)@app.route('/')def hello(): name = request.args.get("name", "World") return f'Hello, {escape(name)}!'

Flask verfügt über eine breite Palette verfügbarer Erweiterungen, mit denen Sie Ihre eigenen Optionen für Speicher, Datenbankinteraktion, Authentifizierung und Autorisierung, Sicherheit und mehr integrieren können. Die Integration und Einrichtung Ihrer Auswahlmöglichkeiten wird einige Zeit in Anspruch nehmen, aber Apps können inkrementell erstellt werden und enthalten keine Bibliotheken und keinen Code für Dinge, die Ihre Anwendung nicht verwendet.

Flask-Apps starten normalerweise in einer einzigen Datei, können jedoch sehr groß skaliert werden. Es gibt gängige Muster für die Anordnung von Flask-Apps, und Flask bietet auch Blueprints an, um größere Anwendungen modularer und verwaltbarer zu gestalten. Fazit: Flask ist extrem flexibel und eignet sich hervorragend für benutzerorientierte Web-Apps, APIs und Microservices. Flask ist das beliebteste Microframework für Python.

Flasche

Flaschenlogo.svg.png

Bottle hat eine ähnliche Syntax wie Flask (es ist tatsächlich um ein Jahr älter), wird aber als einzelne Datei ohne Abhängigkeiten außerhalb der Python-Standardbibliothek verteilt. Dies erleichtert die Ausführung in jeder Umgebung, auch an Orten, an denen die Installation von Bibliotheken schwierig ist. Es bedeutet auch, dass das Abhängigkeitsmanagement trivial sein kann, was für kleinere Projekte großartig sein kann.

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)

Der Funktionsumfang ist Flask sehr ähnlich, aber die aktive Community ist viel kleiner. Die verfügbaren Plugins sind ebenfalls begrenzter. Darüber hinaus gibt es weniger Tutorials und es kann schwieriger sein, Codebeispiele zu finden oder Hilfe zu erhalten.

Bottle richtet sich hauptsächlich an Apps mit sehr kleinen Codebasen und hat keinen klaren Pfad für die Skalierung der Codeorganisation, wenn die Dinge komplex werden. Einfachheit steht im Mittelpunkt. Weniger Abhängigkeiten können die Bereitstellung erheblich vereinfachen (bleiben Sie einfach dabei bottle.py b. in Ihrem Projektverzeichnis) und bringen Sie schneller von einem Prototyp zu einer Produktions-App.

Fazit: Ideal für persönliche Projekte, kleine Apps oder Bereitstellungsszenarien, in denen die Verwaltung komplexer Abhängigkeiten schwierig ist.

H3: Kirsche

cherrypy_logo_big.png

CherryPy ist ein weiteres ausgereiftes Mikroframework (seit 2002) mit eigenen Fans. Ein wesentlicher Unterschied zu Flask und Bottle besteht darin, dass CherryPy objektorientiert ist und sich darauf konzentriert, so „pythonisch“ wie möglich zu sein. Mit anderen Worten, CherryPy zielt darauf ab, das Schreiben einer Web-App dem Schreiben von allgemeinem Python-Code so ähnlich wie möglich zu machen. Schauen wir uns ein Beispiel an:

import cherrypyclass HelloWorld(object): @cherrypy.expose def index(self): return "Hello World!"cherrypy.quickstart(HelloWorld())

Sie können sehen, dass die App als Klasse definiert ist, im Gegensatz zum funktionsbasierten Ansatz von Flask. Auch das Routing selbst ist objektbasiert; Der Dekorateur `@cherrypy` markiert, welche Objektmethoden in Routen umgewandelt werden sollen, wobei in Flask die Dekorateure die Routen selbst definieren. Einige Entwickler bevorzugen diese Form des impliziten Routings, während andere es schwierig finden.

Eine der Stärken von CherryPy ist der Webserver, der im Framework gebündelt ist. Es ist schnell, produktionsbereit, HTTP / 1.1-kompatibel, Thread-gepoolt und kann mit jeder Python-WSGI-Anwendung verwendet werden. Tatsächlich verwenden einige Entwickler den Webserver von CherryPy, um andere (Nicht-CherryPy) WSGI-Apps auszuführen, da er so einfach einzurichten und zu verwenden ist.

CherryPy enthält auch viele integrierte Funktionen, darunter Sitzungsverwaltung, Authentifizierung, statische Inhaltshandler, Caching, Profilerstellung und mehr. Es stehen Plugins zur Verfügung, die auf eine Vielzahl von Erweiterungspunkten zugreifen.

Die Community von CherryPy ist viel kleiner als die von Flask, was eine kleinere Community von Plugins, weniger Tutorials usw. bedeutet.

Fazit: Einen Blick wert, wenn Sie einen objektorientierten Entwicklungsstil bevorzugen.

Falke

Falke.jpg

Falcon ist ein leistungsorientiertes Framework zum Erstellen von REST-APIs und Microservices. Aufgrund seines Fokus auf Geschwindigkeit bietet Falcon einen begrenzten Funktionsumfang: Routing, Middleware, Hooks, starke Fehler- / Ausnahmebehandlung und WSGI-Helfer, um Unit-Tests zu vereinfachen.

Falcon verliert jegliches Interesse an benutzerorientierten Apps und konzentriert sich auf die Bereitstellung von JSON über REST-Endpunkte. Beachten Sie das REST-Verb (GET) in diesem Codebeispiel:

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())

Aufgrund seiner Abstimmung und seines einzigartigen Fokus ist Falcon radikal schneller (20-75x!) als Django und Flask in Bezug auf sehr grundlegende Anforderungen. Weitere starke Aspekte von Falcon sind idiomatische HTTP-Fehlerantworten (ein häufiger Problempunkt beim Erstellen von APIs) und die einfache Ausnahmebehandlung. Es läuft auf PyPy und unterstützt Cython auf CPython, zwei Optionen, die für maximale Leistung in Betracht gezogen werden müssen.

Wenn Sie die Idee von Falcon mögen, aber eine umfassendere Lösung wünschen, werfen Sie einen Blick auf Hug, ein Framework, das auf Falcon aufbaut und Versionsverwaltung, automatische Dokumentation und typgesteuerte automatische Validierung bietet.Fazit: Wenn Sie hochperformante REST / JSON-APIs erstellen möchten, ist Falcon möglicherweise das Richtige für Sie.

Asynchrone Frameworks für Python

Sanic

d803ca00-616c-11e9-86e0-d26ba19c9170.png

Sanic ist ein relativ neues (erstes Release im Jahr 2016) asynchrones Webframework und Server, „geschrieben, um schnell zu gehen“.Während die meisten Full-Stack- und Microframeworks auf dieser Liste schon seit einem Jahrzehnt oder länger existieren, hat die Hinzufügung von asyncio in Python 3.5+ die Türen zu einer ganz neuen Generation von hochperformanten asynchronen Frameworks geöffnet. Sanic ist eine der etabliertesten Optionen in dieser neuen Generation.

Die Syntax von Sanic ist Flask ziemlich ähnlich, mit dem Zusatz von Ende-zu-Ende-Async-Unterstützung:

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)

Es verfügt über starke Routing-Funktionen, Middleware, Streaming, WebSocket-Unterstützung, Cookie-Management, Routenversion, statische Dateibereitstellung und mehr. Sanic ist eine natürliche Lösung, wenn Sie langlebige Verbindungen wie WebSockets verarbeiten müssen oder ein hohes Maß an Parallelität Ihrer API benötigen.

Bei einem asynchronen Framework müssen Sie sich mit der asynchronen Programmierung in Python und den damit verbundenen Einschränkungen, Komplexität und Debugging-Herausforderungen befassen. Es lohnt sich, sich die Zeit zu nehmen, um zu beurteilen, ob Sie wirklich die Leistung einer vollständig asynchronen API benötigen, aber wenn Sie dies tun, ist Sanic einen Blick wert!

Fazit: Eine ausgereifte, etablierte Option zur Entwicklung hochperformanter asynchroner APIs

FastAPI

fastapi.png

FastAPI ist neuer als Sanic (erste Veröffentlichung Anfang 2019), gewinnt aber schnell an Dynamik. Es zeichnet sich durch die Erstellung von REST- oder GraphQL-APIs aus und kann synchrone Anforderungen, asynchrone Anforderungen, Streaming und Websockets verarbeiten.

Es verfügt auch über integrierte Unterstützung für Authentifizierung und Autorisierung, Datenvalidierung, JSON-Serialisierung und automatische API-Dokumentation nach dem OpenAPI-Standard.

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}

Der Funktionsumfang von FastAPI ist wirklich beeindruckend und trifft mit seiner Kombination aus Flexibilität und einfacher Entwicklung einen Sweet Spot. Es ist sehr durchdacht gestaltet und nutzt Type Hinting und Dependency Injection im Großen und Ganzen, um Fehler in der Entwicklung zu reduzieren. Darüber hinaus sind die Dokumentation und der Editor-Support von FastAPI hervorragend.Die Syntax von FastAPI ist Flask sehr ähnlich, was es zu einer guten Wahl macht, wenn Sie vorhandene Flask-Codebasen auf eine vollständig asynchrone Lösung migrieren möchten.

Fazit: FastAPI ist ein Framework auf dem Vormarsch und es lohnt sich, es für Ihr nächstes asynchrones Projekt zu erkunden.

Sternchen

Sternchen.png

Starlette ist ein leichtes ASGI-Framework und Toolkit, das Primitive und modulare Integration bietet, damit Sie Ihre Anwendung mit jedem gewünschten Grad an Kontrolle erstellen können.ASGI ist ein Nachfolger von WSGI und bietet eine Standardschnittstelle zwischen async-fähigen Webservern, Frameworks und Anwendungen. Beachten Sie, dass ASGI sowohl synchrone als auch asynchrone Vorgänge unterstützt und ASGI eine WSGI-Abwärtskompatibilitätsimplementierung enthält.Als Framework bindet Starlette seine verschiedenen Funktionen für Sie zusammen, einschließlich WebSocket-Unterstützung, GraphQL-Unterstützung, In-Process-Hintergrundaufgaben, Session- und Cookie-Unterstützung, CORS, GZip, statische Dateien und mehr. Sie können jedes Stück auch unabhängig voneinander verwenden, indem Sie bestimmte Teile des Toolkits auswählen und auswählen.

Da Starlette zunächst ein Toolkit ist, kann sich die Verwendung als Framework kompositorischer anfühlen, wobei Bedenken separat offengelegt werden:

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 basiert tatsächlich auf Starlette und fügt Syntaxkomfort und zusätzliche Funktionen hinzu. Für die meisten Teams ist FastAPI wahrscheinlich der bessere Ausgangspunkt, aber Starlette bietet maximale Kontrolle und einen leistungsstarken Satz von Grundelementen.

Fazit: Wenn Sie mit Ihren eigenen asynchronen Tools nahe am Metall arbeiten möchten, ist Starlette ein großartiger Ausgangspunkt.

Tornado

Tornado ist ein älteres Async-Webframework, das lange vor der Integration der Asyncio-Funktionen in Python erstellt wurde. Tornado wurde ursprünglich von FriendFeed entwickelt und erstmals 2009 veröffentlicht und ist eine bewährte Lösung für die Skalierung in Zehntausende offener Verbindungen in Python.

Der Kern von Tornado ist ein hochgradig anpassbares Anwendungsmodell mit starken zugrunde liegenden Netzwerkbibliotheken. Es umfasst Routing, Templating, Session- und Cookie-Management, native WebSocket-Unterstützung, Sicherheitsfunktionen und verfügt über eine ausgereifte Palette von Optionen für verschiedene Datenspeicher. Es ist weniger voll ausgestattet als so etwas wie Django, hat aber viel mehr Funktionen als ein typisches Mikroframework. Tornado verwendet Methoden im Verb-Stil für Request-Handler-Klassen und eignet sich daher für einen objektorientierteren Entwicklungsstil:

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 wird weiterhin aktiv verbessert und gepflegt, mit einer robusten Community. Es wird von Facebook, Quora und anderen in ihrer Produktionsarchitektur verwendet.

Tornado 6+ verwendet asyncio unter der Haube und erfordert Python 3.5+, aber Tornado 5 kann mit Python 2.7 und neuer verwendet werden. Unter Python 3.5+ verwenden Tornado asynchrone Coroutinen die native Syntax `async` / `await‘. Für frühere Versionen bietet Tornado eine Generatorsyntax mit ähnlichen Funktionen. Tornado verfügt über eine ausgereifte Bridge für Twisted, mit der Sie sowohl Twisted-Apps als auch Bibliotheken auf Tornado ausführen können.

Fazit: Tornado ist eine bewährte Lösung für die Skalierung in eine große Anzahl gleichzeitiger Anforderungen, die es wert ist, untersucht zu werden, wenn Sie eine etablierte Option mit einer starken Community wünschen, an ältere Codebasen gebunden sind oder ältere Versionen von Python verwenden müssen.

Welches Python-Webframework eignet sich am besten für Sie?

Wie aus dieser Liste hervorgeht, gibt es viele gute Optionen. Tatsächlich gibt es viele andere Frameworks für Python – wir haben diesen Artikel absichtlich auf die Frameworks beschränkt, von denen wir glauben, dass sie 2020 am besten in Betracht gezogen werden sollten.

Ein guter Anfang sind die Kriterien, die wir am Anfang dieses Artikels erwähnt haben. Was sind deine Ziele? Möchten Sie mit etwas Neuem experimentieren, mit bewährter Technologie schnell etwas aufbauen oder neue Fähigkeiten erlernen? Wie viele Leute werden an Ihrer Codebasis arbeiten und wie lange wird es dauern? Dies sind alles hilfreiche Hinweise auf die richtige Wahl.

Es gibt kein Framework, das für alle perfekt ist, aber hier sind einige allgemeine Vorschläge:

  • Wenn Sie schnell mit einer etablierten Lösung beginnen möchten, bei der Ressourcen leicht zu finden sind, verwenden Sie Django oder Flask
  • Wenn Sie gerne klein anfangen und alle Teile Ihrer Anwendung verstehen (oder steuern), erkunden Sie Pyramid, Flask oder CherryPy
  • Wenn Sie eine API oder einen Microservice erstellen, die / der hochperformant sein muss, schauen Sie in Falcon, FastAPI oder Sanic.
  • Wenn Sie ein Anfänger Programmierer sind oder einfach nur lernen, Web-Entwicklung zu tun, sind web2py oder Bottle freundlich, einfache Möglichkeiten, um loszulegen
  • Wenn Sie schauen, um up-and-comings Frameworks mit neuen Ideen und Möglichkeiten, Dinge zu tun, zu erkunden, besuche Masonite und FastAPI

Fanden Sie diesen Artikel hilfreich oder sehen Sie etwas, das Sie nicht einverstanden sind oder denken, sollte verbessert werden. Bitte lassen Sie es uns wissen, wir schätzen Ihr Feedback!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.