Spec-Zone.ru › Django 5.2

Как развернуть с ASGI

Наряду с WSGI, Django также поддерживает развёртывание на ASGI, возникающем стандарте Python для асинхронных веб-серверов и приложений.

Команда управления Django’s startproject настраивает для вас конфигурацию ASGI по умолчанию, которую вы можете настраивать по мере необходимости для вашего проекта, и направлять любой совместимый с ASGI сервер приложения для использования.

Django включает в себя документацию по началу работы для следующих ASGI-серверов:

  • Как использовать Django с Daphne
  • Как использовать Django с Hypercorn
  • Как использовать Django с Uvicorn

Объект application

Как и WSGI, ASGI требует предоставления вызываемого объекта application, который сервер приложения использует для связи с вашим кодом. Обычно он предоставляется как объект с именем 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 — имя вашего проекта.

Применение ASGI-промежуточного ПО

Чтобы применить ASGI-промежуточное ПО или внедрить Django в другое ASGI-приложение, вы можете обернуть объект Django’s 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/5.2/howto/deployment/asgi/index/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API