• 3.1
  • 3.2
  • 6.1
  • Версия документации: 5.0

Как развернуть проект с помощью ASGI

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

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

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

Объект 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 middleware

Чтобы ASGI middleware или встроить Django в другое приложение ASGI, вы можете обернуть объект application Django в файле asgi.py. Для example:

from some_asgi_library import AmazingMiddleware

application = AmazingMiddleware(application)
Back to Top