Spec-Zone.ru › Django 1.10

Как развернуть приложение с помощью WSGI

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

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

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

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

Объект 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-приложением другого фреймворка.

Примечание

Некоторые сторонние WSGI-средства не вызывают close на объекте ответа после обработки запроса. В таких случаях сигнал request_finished не отправляется. Это может привести к незадействованным подключениям к серверам базы данных и memcache.

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

Spec-Zone.ru

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