Как развернуть с 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)

Copyright ©2020 All rights reserved