Ответ 1
После проверки я бы сказал, что лучший способ - использовать gunicorn
+ wsgi
$ gunicorn project.wsgi:application
Теперь это подтверждается и в документах-стрелках: если вы запускаете Django 1.4 или новее, настоятельно рекомендуется просто запустить приложение с интерфейсом WSGI с помощью пушки команда и django как указано выше.
Он также избегает добавления gunicorn в качестве установленного приложения, а это означает, что не требуется устанавливать gunicorn для тестирования вашего приложения, которое может быть полезно время от времени.
О настройках
Файл настроек Django, который будет использоваться, может быть передан через переменную ENV или настроен в файле wsgi.py
. Иногда я создаю несколько файлов wsgi.py
, если у меня есть несколько параметров (например, несколько веб-сайтов), которые должны запускаться из одного проекта - См. Django Doc для получения дополнительной информации.
Однострочное решение, которое не требует никакого нового файла из Carl comment:
DJANGO_SETTINGS_MODULE=project.settings.prod gunicorn project.wsgi:application
звучит как приятный способ (хотя я, вероятно, в конечном итоге напишу его в некоторых командах оболочки, чтобы было легко "запомнить" ).
Настройки Gunicorn могут быть переданы как -c settings_file
, но я изучаю другие способы и попытаюсь обновить этот ответ, если найду что-нибудь. Использование переменных среды кажется рабочим, но только для ограниченных случаев
В частности, было бы неплохо получить/поделиться некоторыми настройками между django и gunicorn; в документации по стрельбе:
В настоящее время только приложения Paster имеют доступ к инфраструктуре конкретные настройки. Если у вас есть идеи по настройке WSGI приложения или вытаскивание информации из настроек Djangos.py бесплатно, чтобы открыть вопрос, чтобы сообщить нам.
( Обновить: не нашли более разумного способа, но ведь для всех наиболее распространенных случаев достаточно env-переменных).