Как развернуть приложение с ASGI
Помимо WSGI, Django также поддерживает развертывание на ASGI, новом стандартном Python-решении для асинхронных веб-серверов и приложений.
Команда управления Django startproject настраивает для вас стандартную конфигурацию ASGI, которую можно настроить по мере необходимости для вашего проекта и использовать с любым сервером приложений, совместимым с ASGI.
Django включает документацию по началу работы со следующими серверами ASGI:
Объект приложения
Как и в WSGI, в ASGI вам необходимо предоставить вызываемую функцию, которую сервер приложения использует для взаимодействия с вашим кодом. Она обычно предоставляется как объект с именем application в модуле Python, доступном серверу.
Команда startproject создает файл <project_name>/asgi.py, содержащий такую вызываемую функцию application.
Она не используется сервером разработки (runserver), но может использоваться любым сервером ASGI как в разработке, так и в производстве.
Серверы ASGI обычно принимают путь к вызываемой функции приложения в виде строки; для большинства проектов Django этот путь будет выглядеть как myproject.asgi:application.
Предупреждение
Хотя стандартный обработчик ASGI Django выполнит весь ваш код в синхронной потоковой нити, если вы выберете выполнение своего асинхронного обработчика, вы должны знать об асинхронной безопасности.
Не вызывайте блокирующие синхронные функции или библиотеки в любом асинхронном коде. Django защищает вас от этого с частями Django, которые не являются асинхронно безопасными, но то же самое может не относиться к сторонним приложениям или библиотекам Python.
Настройка модуля настроек
Когда сервер ASGI загружает ваше приложение, Django необходимо импортировать модуль настроек — там определяется всё ваше приложение.
Django использует переменную среды DJANGO_SETTINGS_MODULE для поиска соответствующего модуля настроек. Она должна содержать путь с точками к модулю настроек. Вы можете использовать разные значения для разработки и производства; всё зависит от того, как вы организовали свои настройки.
Если эта переменная не задана, по умолчанию asgi.py она устанавливается на mysite.settings, где mysite — название вашего проекта.
Применение middleware ASGI
Для применения middleware ASGI или для интеграции Django в другое ASGI-приложение вы можете обернуть объект Django application в файле asgi.py. Например:
from some_asgi_library import AmazingMiddleware application = AmazingMiddleware(application)
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/index/