---
title: "Come distribuire con ASGI."
version: 4.2
locale: it
source: https://docs.djangoproject.com/it/4.2/howto/deployment/asgi/
canonical: https://djangodocs.dev/it/4.2/howto/deployment/asgi/
---
# Come distribuire con ASGI.

Così come WSGI, Django supporta anche il deploy su [ASGI](https://asgi.readthedocs.io/en/latest/), lo standard emergente di Pyhon per i web server e le applicazioni asincrone.

Il comando di gestione di Django [`startproject`](/it/4.2/ref/django-admin/#django-admin-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](/it/4.2/howto/deployment/asgi/daphne/)
- [Come utilizzare Django con Hypercorn](/it/4.2/howto/deployment/asgi/hypercorn/)
- [Come utilizzare Django con Uvicorn](/it/4.2/howto/deployment/asgi/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`](/it/4.2/ref/django-admin/#django-admin-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`.

> **Warning**
>
> 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)
```
