# Django 5.2.8 documentation

# Så här distribuerar du med ASGI

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:

- Så här använder du Django med Daphne
- Så här använder du Django med Hypercorn
- Så här använder du Django med Uvicorn

## Objektet ``applikation

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`.

Varning

Djangos standard ASGI-hanterare kör all din kod i en synkron tråd, men om du väljer att köra din egen async-hanterare måste du vara medveten om async-safety.

Anropa inte blockerande synkrona funktioner eller bibliotek i någon asynkron kod. Django hindrar dig från att göra detta med de delar av Django som inte är async-säkra, men detsamma kanske inte gäller för tredjepartsappar eller Python-bibliotek.

## Konfigurera inställningsmodulen

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-mellanprogram

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:

    from some_asgi_library import AmazingMiddleware

    application = AmazingMiddleware(application)