Как развернуть с ASGI ¶
Помимо WSGI, Django также поддерживает развертывание в ASGI , развивающемся стандарте Python для асинхронных веб-серверов и приложений.
startproject
Команда управления Django устанавливает для вас конфигурацию ASGI по умолчанию, которую вы можете настроить по мере необходимости для своего проекта и указать для использования любой ASGI-совместимый сервер приложений.
Django включает документацию по началу работы для следующих серверов ASGI:
application
Объект ¶
Как и WSGI, в ASGI вы предоставляете application
вызываемый объект, который сервер приложений использует для связи с вашим кодом. Обычно он предоставляется как объект, названный application
в модуле Python, доступном серверу.
Команда startproject
создает файл
<project_name>/asgi.py
, содержащий такой application
вызываемый объект .
Он не используется сервером разработки ( runserver
), но может использоваться любым сервером ASGI как в разработке, так и в производстве.
Серверы ASGI обычно принимают путь к вызываемому приложению в виде строки; для большинства проектов Django это будет выглядеть так myproject.asgi:application
.
Предупреждение
Хотя обработчик ASGI Django по умолчанию будет запускать весь ваш код в синхронном потоке, если вы решите запустить свой собственный обработчик async, вы должны знать об асинхронной безопасности.
Не вызывайте блокирующие синхронные функции или библиотеки в любом асинхронном коде. Django не позволяет вам делать это с частями Django, которые не являются асинхронно-безопасными, но то же самое может не относиться к сторонним приложениям или библиотекам Python.
Настройка модуля настроек ¶
Когда сервер ASGI загружает ваше приложение, Django необходимо импортировать модуль настроек - это место, где определяется все ваше приложение.
Django использует DJANGO_SETTINGS_MODULE
переменная среды, чтобы найти соответствующий модуль настроек. Он должен содержать пунктирный путь к модулю настроек. Вы можете использовать другое значение для разработки и производства; все зависит от того, как вы организовываете свои настройки.
Если эта переменная не установлена, по умолчанию asgi.py
устанавливается значение
mysite.settings
, где mysite
- имя вашего проекта.
Применение промежуточного программного обеспечения ASGI ¶
Чтобы применить промежуточное ПО ASGI или встроить Django в другое приложение ASGI, вы можете обернуть application
объект Django в asgi.py
файл. Например:
from some_asgi_library import AmazingMiddleware
application = AmazingMiddleware(application)