Spec-Zone.ru › Django 6.0

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

Основной платформой развертывания Django является WSGI — стандарт Python для веб-серверов и приложений.

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

В документации Django описано, как начать работу со следующими WSGI-серверами:

  • Как использовать Django с Gunicorn
  • Как использовать Django с uWSGI
  • Как использовать Django с Apache и mod_wsgi
  • Как выполнять аутентификацию в базе данных пользователей Django из Apache

Объект application

Ключевое понятие развертывания с WSGI — вызываемый объект application, с помощью которого сервер приложений взаимодействует с вашим кодом. Обычно он предоставляется в виде объекта с именем application в доступном серверу модуле Python.

Команда startproject создает файл <project_name>/wsgi.py, содержащий такой вызываемый объект application.

Он используется как сервером разработки Django, так и в производственных развертываниях WSGI.

WSGI-серверы получают путь к вызываемому объекту application из своей конфигурации. Встроенный сервер Django, а именно команда runserver, считывает его из параметра WSGI_APPLICATION. По умолчанию ему присваивается значение <project_name>.wsgi.application, указывающее на вызываемый объект application в <project_name>/wsgi.py.

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

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

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

Если эта переменная не задана, команда wsgi.py присваивает ей значение mysite.settings, где mysite — имя вашего проекта. Именно так команда runserver по умолчанию находит файл параметров.

Примечание

Поскольку переменные окружения доступны всему процессу, этот способ не работает, если в одном процессе запущено несколько сайтов Django. Такая ситуация возникает при использовании mod_wsgi.

Чтобы избежать этой проблемы, используйте режим демона mod_wsgi, запуская каждый сайт в отдельном процессе демона, или переопределите значение из окружения, принудительно задав os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" в файле wsgi.py.

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

Чтобы применить промежуточное ПО WSGI, можно обернуть объект приложения. Например, можно добавить следующие строки в конец файла wsgi.py:

from helloworld.wsgi import HelloWorldApplication

application = HelloWorldApplication(application)

Если вы хотите объединить приложение Django с WSGI-приложением другого фреймворка, можно также заменить WSGI-приложение Django собственным WSGI-приложением, которое затем будет делегировать вызовы WSGI-приложению Django.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/howto/deployment/wsgi/index/

Spec-Zone.ru

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