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

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

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

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

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, если вы хотите объединить приложение Django с приложением WSGI другой платформы.

Copyright ©2021 All rights reserved