Petty Little Fun # 2: Starlette


Tunnelblick


Es ist einfach so passiert, dass viele Webanwendungen in Python geschrieben sind. Diese Nische der Python-Entwicklung wurde fast vollständig von zwei gesunden Spielern geteilt - Django und Flask. Daher widmet sich ein großer Prozentsatz der Python-Programmierer der Arbeit mit diesen beiden Frameworks.


Aus diesem Grund haben viele Python-Entwickler eine Art Tunnelblick - ihr technischer Ansatz ist zwischen den beiden Bibliotheken gesperrt.


Einige Programmierer sind nicht auf Djano und Flask beschränkt und fügen ihren Kampfwerkzeugen alle möglichen neuen Dinge hinzu. Zum Beispiel das modische Sanic Framework.


Tektonische Verschiebung: von WSGI zu ASGI


Während der Zeit der schnellen Anpassung von Python an die Anforderungen der Webentwicklung entwickelte die Community den WSGI- Standard - Web Server Gateway Interface. In diesem Protokoll wurde beschrieben, wie ein Webserver HTTP-Anforderungen zur Verarbeitung in einer Python-Anwendung senden und Antworten von dort empfangen kann.


WSGI ebnete den Weg für die Entwicklung vieler Webentwicklungs-Frameworks und -Bibliotheken. Sie waren alle unterschiedlich in ihrer Architektur, aber die gleiche Art der Kommunikation mit einem externen Webserver. WSGI wurde bereits 2003 von der Community eingeführt und wird von allen beliebten klassischen Web-Frameworks mit Haustierantrieb (einschließlich Django und Flask) weiterhin unterstützt.


Probleme mit WSGI begannen, nachdem leistungsstarke Tools zum asynchronen Ausführen von Code und Coroutinen im Python-Kern erschienen waren. WSGI ist alt und konzentriert sich überhaupt nicht auf die Arbeit mit neuen Sprachfunktionen. Daher war ein neues asynchrones Protokoll für die Kommunikation eines Webservers mit Python-Programmen erforderlich. So erschien ASGI (Asynchronous Server Gateway Interface) - ein ideologischer Nachkomme von WSGI , jedoch mit Coroutinen und Asynchronität.


Die Entwickler der alten Frameworks wurden von ihrem Publikum als Geiseln gehalten - sie können ihre Frameworks einfach nicht auf den asynchronen Ansatz übertragen (dies wird den Code brechen und die Kompatibilität zerstören), sodass sich die gesamte Entwicklung mit ASGI auf neue Frameworks konzentrierte, die in den letzten Jahren veröffentlicht wurden Django


Starlette - ein brillanter Rahmen



Starlette ist ein neues, flinkes und cooles Framework, das den ASGI-Ansatz implementiert. Alles daran konzentriert sich auf Asynchronität und neue Chips des 3. Python-Zweigs.


Darüber hinaus hat Starlette eine ganze Reihe von ernsthaften Leckereien.


  • GraphQL sofort einsatzbereit . Ja, dieser neue Ansatz zur Entwicklung von Client-Server-Interaktionen beginnt, REST voranzutreiben, und nimmt seinen Platz in der Welt der Web-Frameworks ein.
  • Web-Sockets sind bereits integriert und einsatzbereit.
  • Vorgefertigte Middleware für die Arbeit mit Autorisierung / Authentifizierung, CORS.
  • Integrierte asynchrone Aufgaben.

Feste Lotion - FastAPI



Einige Starlette- Programmierer mochten es sehr und erstellten eine Erweiterung für dieses Framework - FastAPI


FastAPI ist in der Tat ein Fleck in den nativen Starlette- Klassen und fügt dem bereits guten Framework eine Reihe neuer Funktionen hinzu.


  • Brötchen zum Erstellen von REST-API- Diensten + Swagger- Dokumentation für Methoden. Starlette konzentriert sich auf trendiges GraphQL , FastAPI kümmert sich um diejenigen, die REST gesehen haben .
  • Praktische Gadgets, die auf Tooltips von Variablentypen basieren. Zum Beispiel integrierte Datenvalidatoren.
  • Nettes Dienstprogramm für Authentifizierung und Authentifizierungsprozesse - Unterstützung für JWT, OAuth2.

Und eine Reihe von kleinen Annehmlichkeiten und Annehmlichkeiten.


Im trockenen Rückstand


Es ist Zeit, in die Welt von ASGI und seine Rahmenbedingungen einzutauchen (es sei denn, Sie haben dies bereits getan). Asynchrone Lösungen sind noch weit davon entfernt, den Markt zu dominieren, aber sie entwickeln sich aktiv weiter. Und vor allem - wegen seiner Geschwindigkeit.

Source: https://habr.com/ru/post/de454440/


All Articles