© Grfxpro/Shutterstock.com
Pythons Web-Framework erhält neue Funktion

Django wird asynchron


Die erweiterte Async-Funktion hält Einzug in Pythons beliebtes Web-Framework Django. Doch welche Vorteile hat die Neuerung für Nutzer und wie können Async Views, Middleware und Tests verwendet werden?

Django – benannt nach dem Jazzgitarristen Django Reinhardt – ist eines der großen Web-Frameworks für die Programmiersprache Python. „The web framework for perfectionists with deadlines“, wie die offizielle Seite [1] verlauten lässt. Django verfolgt einen „batteries included“ Ansatz – im Gegensatz zu Flask – ähnlich Ruby on Rails. Die Lernkurve ist zwar steiler als bei Flask, dafür verkürzt sich die Entwicklungszeit der Applikationen merklich.

Im Vergleich zu Node.js-basierten Web-Frameworks war es in Django und Flask bisher deutlich schwerer, unterschiedliche Tasks gleichzeitig in Bearbeitung zu halten. Das wird sich in Zukunft ändern, denn auch Django hat jetzt die erweiterte asynchrone Funktionalität erhalten. Ab Django in der Version 3.1 (Release am 4. August 2020) werden asynchrone Views, Middle-wares und Tests unterstützt. Async-Unterstützung für weitere Funktionen (ORM, Formulare und Caching) wird zukünftig folgen. Wer die neuen Features nicht nutzen möchte, muss nichts ändern, der bestehende Code läuft weiter wie bisher. Mit Version 3.0 [2] kam das „asynchrone Server-Gateway-Interface“ ASGI [3], allerdings konnte es asynchron bisher kaum benutzt werden (mit Ausnahme von Fileuploads, denn die erreichen den View-Layer nicht, der in 3.0 noch nicht Async-fähig war). In welchen Fällen können Async Views am besten eingesetzt werden? Insbesondere, um viele kleine Tasks simultan auszuführen. Ein paar Beispiele:

  • Chat-Services wie Slack [4]

  • Ein neues API-Frontend für das Django REST Framework [5], das Änderungen der Daten auf den Endpunkten unmittelbar anzeigt

  • Dashboardanwendungen, die die aktuelle Anzahl aktiver Verbindungen oder Requests pro Sekunde in Echtzeit anzeigen

  • Gateway-APIs/Proxy Services

  • Onlinespiele (zum Beispiel MMOs wie EVE Online [6])

  • Anwendungen, die Phoenix LiveView [7] nutzen (weitere Beispiele auf Phoenix Phrenzy Results [8])

  • Ein reaktives Django-Admin-Interface [9], bei dem Änderungen der Model-Daten interaktiv angezeigt werden

Tom Christie stellte im Talk „Sketching out a Django redesign“ [10] auf der DjangoCon 2019 die Frage: „Müssen wir für solche Anwendungsfälle auf eine andere Sprache ausweichen?“ In letzter Zeit gewinnt Christies Projekt Starlette [11] zunehmend an Beliebtheit, vor allem in Kombination mit dem FastAPI Framework [1...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang