# Documentazione Django 5.2.8

# Come distribuire con ASGI.

Così come WSGI, Django supporta anche il deploy su ASGI, lo standard emergente di Pyhon per i web server e le applicazioni asincrone.

Il comando di gestione di Django `startproject` imposta una configurazione ASGI di default per te, che puoi migliorare a seconda delle necessità del tuo progetto, e orientare ogni server per le applicazioni che sia ASGI-compliant al suo utilizzo.

Django comprende la documentazione per iniziare ad utilizzare i seguenti server ASGI:

- Come usare Django con Daphne
- Come utilizzare Django con Hypercorn
- Come utilizzare Django con Uvicorn

## L’oggetto `application`

Come WSGI, ASGI ti richiede di fornire una `applicazione` chiamabile che l’application server utilizza per comunicare con il tuo codice. Normalmente è fornita come un oggetto chiamato `application` in un modulo Python accessibile al server.

Il comando `startproject` crea un file `<project_name>/asgi.py` che contiene questa `application` richiamabile.

Non è usato dal server di sviluppo (`runserver`), ma può essere utilizzato da ogni server ASGI sia in sviluppo che in produzione.

I server ASGI normalmente prendono il percorso dell’applicazione richiamabile come stringa; per molti progetti Django, avrà questo aspetto: `myproject.asgi:application`.

Avvertimento

Mentre l’handler di default di Django avvierà tutto il tuo codice un thread sincrono, se scegli di avviare il tuo handler asincrono devi essere al corrente della async-safety.

Non chiamare funzioni sincrone o librerie bloccanti in alcun codice asincrono. Django ti impedisce di farlo con le parti di Django che non sono async-safe, ma lo stesso potrebbe non essere vero per applicazioni di terze parti o librerie Python.

## Configura il modulo settings

Quando il server ASGI carica la tua applicazione, Django ha bisogno di importare il modulo settings - che è il posto dove la tua intera applicazione è definita.

Django usa la variabile d’ambiente envvar:DJANGO_SETTINGS_MODULE per trovare il modulo di impostazioni appropriato. Deve contenere il percorso puntato al modulo delle impostazioni. Puoi usare valori diversi per lo sviluppo e la produzione; dipende tutto da come organizzi le tue impostazioni.

Se questa variabile non è impostata, il file predefinito `asgi.py` lo imposta a `mysite.settings`, dove `mysite` è il nome del tuo progetto.

## Caricare il middleware ASGI

Per applicare un middleware ASGI, o per incorporare Django in un’altra applicazione ASGI, puoi avvolgere l’oggetto `application` di Django nel file `asgi.py`. Per esempio:

    from some_asgi_library import AmazingMiddleware

    application = AmazingMiddleware(application)