{"title":"Come distribuire con ASGI.","version":"5.0","locale":"it","docname":"howto/deployment/asgi/index","url":"/it/5.0/howto/deployment/asgi/","canonical":"https://djangodocs.dev/it/5.0/howto/deployment/asgi/","summary":"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…","html":"<h1>Come distribuire con ASGI.<a class=\"heading-anchor\" href=\"#how-to-deploy-with-asgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Così come WSGI, Django supporta anche il deploy su <a class=\"reference external\" href=\"https://asgi.readthedocs.io/en/latest/\">ASGI</a>, lo standard emergente di Pyhon per i web server e le applicazioni asincrone.</p>\n<p>Il comando di gestione di Django <a class=\"reference internal\" href=\"/it/5.0/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> 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.</p>\n<p>Django comprende la documentazione per iniziare ad utilizzare i seguenti server ASGI:</p>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/it/5.0/howto/deployment/asgi/daphne/\">Come usare Django con Daphne</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/it/5.0/howto/deployment/asgi/hypercorn/\">Come utilizzare Django con Hypercorn</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/it/5.0/howto/deployment/asgi/uvicorn/\">Come utilizzare Django con Uvicorn</a></li>\n</ul>\n</div>\n<section id=\"the-application-object\">\n<h2>L’oggetto <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code><a class=\"heading-anchor\" href=\"#the-application-object\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Come WSGI, ASGI ti richiede di fornire una <code class=\"docutils literal notranslate\"><span class=\"pre\">applicazione</span></code> chiamabile che l’application server utilizza per comunicare con il tuo codice. Normalmente è fornita come un oggetto chiamato <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> in un modulo Python accessibile al server.</p>\n<p>Il comando <a class=\"reference internal\" href=\"/it/5.0/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> crea un file <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;/asgi.py</span></code> che contiene questa <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> richiamabile.</p>\n<p>Non è usato dal server di sviluppo (<code class=\"docutils literal notranslate\"><span class=\"pre\">runserver</span></code>), ma può essere utilizzato da ogni server ASGI sia in sviluppo che in produzione.</p>\n<p>I server ASGI normalmente prendono il percorso dell’applicazione richiamabile come stringa; per molti progetti Django, avrà questo aspetto:  <code class=\"docutils literal notranslate\"><span class=\"pre\">myproject.asgi:application</span></code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avvertimento</p>\n<p>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.</p>\n<p>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.</p>\n</aside>\n</section>\n<section id=\"configuring-the-settings-module\">\n<h2>Configura il modulo settings<a class=\"heading-anchor\" href=\"#configuring-the-settings-module\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>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.</p>\n<p>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.</p>\n<p>Se questa variabile non è impostata, il file predefinito <code class=\"file docutils literal notranslate\"><span class=\"pre\">asgi.py</span></code> lo imposta a <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.settings</span></code>, dove <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> è il nome del tuo progetto.</p>\n</section>\n<section id=\"applying-asgi-middleware\">\n<h2>Caricare il middleware ASGI<a class=\"heading-anchor\" href=\"#applying-asgi-middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Per applicare un middleware ASGI, o per incorporare Django in un’altra applicazione ASGI, puoi avvolgere l’oggetto <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> di Django nel file <code class=\"docutils literal notranslate\"><span class=\"pre\">asgi.py</span></code>. Per esempio:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">some_asgi_library</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">AmazingMiddleware</span>\n\n<span class=\"n\">application</span> <span class=\"o\">=</span> <span class=\"n\">AmazingMiddleware</span><span class=\"p\">(</span><span class=\"n\">application</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>","rootId":"how-to-deploy-with-asgi","toc":[{"title":"L’oggetto application","anchor":"the-application-object","children":[]},{"title":"Configura il modulo settings","anchor":"configuring-the-settings-module","children":[]},{"title":"Caricare il middleware ASGI","anchor":"applying-asgi-middleware","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"guide «How-to»","url":"/it/5.0/howto/"},{"docname":"howto/deployment/index","title":"Come distribuire Django","url":"/it/5.0/howto/deployment/"}],"prev":{"docname":"howto/deployment/wsgi/apache-auth","title":"Come autenticare da Apache verso il database utenti di Django","url":"/it/5.0/howto/deployment/wsgi/apache-auth/"},"next":{"docname":"howto/deployment/asgi/daphne","title":"Come usare Django con Daphne","url":"/it/5.0/howto/deployment/asgi/daphne/"},"formats":{"html":"/it/5.0/howto/deployment/asgi/","markdown":"/it/5.0/howto/deployment/asgi.md","json":"/it/5.0/howto/deployment/asgi.json"},"source":"https://github.com/django/django/blob/stable/5.0.x/docs/howto/deployment/asgi/index.txt","official":"https://docs.djangoproject.com/it/5.0/howto/deployment/asgi/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}