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