Spec-Zone.ru › Django 6.0

Как развернуть с 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-сервером как при разработке, так и в production.

ASGI-серверы обычно принимают путь к вызываемому объекту приложения в виде строки; для большинства проектов Django он будет выглядеть так: myproject.asgi:application.

Предупреждение

Стандартный обработчик ASGI в Django выполняет весь ваш код в синхронном потоке, но если вы решите использовать собственный асинхронный обработчик, необходимо учитывать безопасность при работе с асинхронным кодом.

Не вызывайте блокирующие синхронные функции или библиотеки в асинхронном коде. Django предотвращает такие вызовы для тех своих компонентов, которые небезопасны при асинхронной работе, но сторонние приложения и библиотеки Python могут этого не делать.

Настройка модуля параметров

Когда ASGI-сервер загружает ваше приложение, Django должен импортировать модуль параметров — именно в нем определено все ваше приложение.

Django использует переменную окружения DJANGO_SETTINGS_MODULE, чтобы определить нужный модуль параметров. Она должна содержать путь к модулю параметров, записанный через точки. Для разработки и production можно использовать разные значения — все зависит от того, как организованы ваши параметры.

Если эта переменная не задана, команда asgi.py устанавливает для нее значение mysite.settings, где mysite — имя вашего проекта.

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

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

Spec-Zone.ru

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