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:

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)
Back to Top