Spec-Zone.ru › Django 4.2

Как развернуть приложение с ASGI

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

Команда управления Django 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 — имя вашего проекта.

Применение 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/4.2/howto/deployment/asgi/index/

Spec-Zone.ru

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