Så här distribuerar du med ASGILink to this heading

Förutom WSGI stöder Django också distribution på ASGI, den nya Python-standarden för asynkrona webbservrar och applikationer.

Djangos hanteringskommando startproject ställer in en standard ASGI-konfiguration åt dig, som du kan justera efter behov för ditt projekt och styra vilken ASGI-kompatibel applikationsserver som helst att använda.

Django innehåller dokumentation för att komma igång med följande ASGI-servrar:

Objektet ``applikationLink to this heading

I likhet med WSGI måste du i ASGI tillhandahålla en ”applikation” som applikationsservern använder för att kommunicera med din kod. Den tillhandahålls vanligen som ett objekt med namnet application i en Python-modul som är tillgänglig för servern.

Kommandot startproject skapar en fil <project_name>/asgi.py som innehåller en sådan application callable.

Den används inte av utvecklingsservern (runserver), men kan användas av vilken ASGI-server som helst, antingen under utveckling eller i produktion.

ASGI-servrar tar vanligtvis sökvägen till applikationens anropsbarhet som en sträng; för de flesta Django-projekt kommer detta att se ut som myproject.asgi:application.

Konfigurera inställningsmodulenLink to this heading

När ASGI-servern laddar din applikation måste Django importera inställningsmodulen - det är där hela din applikation definieras.

Django använder miljövariabeln DJANGO_SETTINGS_MODULE för att hitta rätt inställningsmodul. Den måste innehålla den prickade sökvägen till inställningsmodulen. Du kan använda ett annat värde för utveckling och produktion; det beror helt på hur du organiserar dina inställningar.

Om den här variabeln inte är inställd, ställer standard asgi.py in den på mysite.settings, där mysite är namnet på ditt projekt.

Tillämpning av ASGI-mellanprogramLink to this heading

För att använda ASGI middleware, eller för att bädda in Django i en annan ASGI-applikation, kan du linda in Djangos application-objekt i filen asgi.py. Till exempel:

Code
from some_asgi_library import AmazingMiddleware

application = AmazingMiddleware(application)