{"title":"Comment déployer avec ASGI","version":"6.1","locale":"fr","docname":"howto/deployment/asgi/index","url":"/fr/6.1/howto/deployment/asgi/","canonical":"https://djangodocs.dev/fr/6.1/howto/deployment/asgi/","summary":"En plus de WSGI, Django peut aussi être déployé avec ASGI , le standard Python émergent pour les serveurs et applications asynchrones. La commande d’administration…","html":"<h1>Comment déployer avec ASGI<a class=\"heading-anchor\" href=\"#how-to-deploy-with-asgi\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>En plus de WSGI, Django peut aussi être déployé avec <a class=\"reference external\" href=\"https://asgi.readthedocs.io/en/latest/\">ASGI</a>, le standard Python émergent pour les serveurs et applications asynchrones.</p>\n<p>La commande d’administration <a class=\"reference internal\" href=\"/fr/6.1/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> de Django définit par défaut une configuration ASGI pour vous, que vous pouvez ensuite adapter aux besoins de votre projet ; cette configuration est alors utilisable par tout serveur d’applications se conformant au standard ASGI.</p>\n<p>Django contient de la documentation sommaire pour les serveurs ASGI suivants :</p>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/fr/6.1/howto/deployment/asgi/daphne/\">Comment utiliser Django avec Daphne</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/fr/6.1/howto/deployment/asgi/granian/\">How to use Django with Granian</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/fr/6.1/howto/deployment/asgi/hypercorn/\">Comment utiliser Django avec Hypercorn</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/fr/6.1/howto/deployment/asgi/uvicorn/\">Comment utiliser Django avec Uvicorn</a></li>\n</ul>\n</div>\n<section id=\"the-application-object\">\n<h2>L’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code><a class=\"heading-anchor\" href=\"#the-application-object\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Comme WSGI, ASGI met à disposition un objet exécutable <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> que le serveur d’applications utilise pour communiquer avec votre code. Ceci est généralement fourni par un objet nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> dans un module Python accessible par le serveur.</p>\n<p>La commande <a class=\"reference internal\" href=\"/fr/6.1/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> crée un fichier <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_projet&gt;/asgi.py</span></code> qui contient l’objet exécutable <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code>.</p>\n<p>Il n’est pas utilisé par le serveur de développement (<code class=\"docutils literal notranslate\"><span class=\"pre\">runserver</span></code>), mais peut être utilisé par tout serveur ASGI, que ce soit en développement ou en production.</p>\n<p>Les serveurs ASGI acceptent généralement le chemin vers l’objet application sous forme de chaîne ; pour la plupart des projets Django, cela ressemble à <code class=\"docutils literal notranslate\"><span class=\"pre\">monprojet.asgi:application</span></code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Bien que le gestionnaire ASGI par défaut de Django exécute tout le code dans un fil d’exécution synchrone, si vous choisissez d’exécuter votre propre gestionnaire asynchrone, vous devez être conscient des mesures de sûreté asynchrones.</p>\n<p>N’appelez pas de fonctions ou bibliothèques bloquantes à partir de code asynchrone. Django vous empêche de faire cela dans les parties de Django qui ne gèrent pas l’asynchronisme, mais ce n’est pas forcément le cas pour du code tiers ou de bibliothèques Python.</p>\n</aside>\n</section>\n<section id=\"configuring-the-settings-module\">\n<h2>Configuration du module de réglages (settings)<a class=\"heading-anchor\" href=\"#configuring-the-settings-module\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Lorsque le serveur ASGI charge une application, Django doit importer le module <code class=\"docutils literal notranslate\"><span class=\"pre\">settings</span></code>, c’est là où se trouve toute la configuration de votre application.</p>\n<p>Django utilise la variable d’environnement <span class=\"target\" id=\"index-2\"></span><a class=\"reference internal\" href=\"/fr/6.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> pour trouver le module <code class=\"docutils literal notranslate\"><span class=\"pre\">settings</span></code> approprié. Il doit contenir le chemin vers le module <code class=\"docutils literal notranslate\"><span class=\"pre\">settings</span></code> avec la syntaxe pointée. Il est possible d’utiliser une valeur différente entre le développement et la production ; tout dépend de la façon d’organiser les réglages.</p>\n<p>Si cette variable n’est pas définie, le fichier <code class=\"file docutils literal notranslate\"><span class=\"pre\">asgi.py</span></code> par défaut la définit à <code class=\"docutils literal notranslate\"><span class=\"pre\">monsite.settings</span></code>, où <code class=\"docutils literal notranslate\"><span class=\"pre\">monsite</span></code> est le nom de votre projet.</p>\n</section>\n<section id=\"applying-asgi-middleware\">\n<h2>Application des intergiciels ASGI<a class=\"heading-anchor\" href=\"#applying-asgi-middleware\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Pour appliquer un <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`intergiciel ASGI`_</span></a>, ou pour envelopper Django dans une autre application ASGI, vous pouvez encapsuler l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> de Django dans le fichier <code class=\"docutils literal notranslate\"><span class=\"pre\">asgi.py</span></code>. Par exemple</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’objet application","anchor":"the-application-object","children":[]},{"title":"Configuration du module de réglages (settings)","anchor":"configuring-the-settings-module","children":[]},{"title":"Application des intergiciels ASGI","anchor":"applying-asgi-middleware","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Guides pratiques","url":"/fr/6.1/howto/"},{"docname":"howto/deployment/index","title":"Comment déployer Django","url":"/fr/6.1/howto/deployment/"}],"prev":{"docname":"howto/deployment/wsgi/apache-auth","title":"Authentification sur la base de données des utilisateurs de Django depuis Apache","url":"/fr/6.1/howto/deployment/wsgi/apache-auth/"},"next":{"docname":"howto/deployment/asgi/daphne","title":"Comment utiliser Django avec Daphne","url":"/fr/6.1/howto/deployment/asgi/daphne/"},"formats":{"html":"/fr/6.1/howto/deployment/asgi/","markdown":"/fr/6.1/howto/deployment/asgi.md","json":"/fr/6.1/howto/deployment/asgi.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/howto/deployment/asgi/index.txt","official":"https://docs.djangoproject.com/fr/6.1/howto/deployment/asgi/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}