Подтвердить что ты не робот

Gunicorn не перезагружает приложение Django

Я получаю непоследовательное поведение при перегрузке кода с помощью приложения Django 1.3 и gunicorn 0.12.1, работающего внутри виртуального файла.

Gunicorn не перезагружает мое приложение должным образом, даже при перезагрузке конкретного PID пулеметного процесса. Когда я запускаю базовый runserver (через Django, используя команду manage.py), это не проблема.

Когда я удаляю и воссоздаю свой virtualenv, пушки, как и ожидалось, запускается с новым кодом.

Есть ли кеш Python или что-то еще? Я также попытался удалить все *.pyc файлы.

4b9b3361

Ответ 1

Попробуйте следующее:

$ kill -HUP masterpid

Кроме того, посмотрите на некоторые примечания внизу после сообщения.

Ответ 2

Я столкнулся с вариациями этой проблемы, как это было сказано в статье, связанной с г-ном Покоми, убивая мастер-процесс пушки с сигналом HUP, похоже, делает трюк.

Можно легко настроить автоматическую перезагрузку в файле, если вы используете модуль python watchdog; настройка на самом деле довольно понятна, поэтому здесь фрагмент моего файла supervisord.conf для разработки:

[program:ost2]
autostart=true
command=/usr/local/share/python/gunicorn --debug\
-c /Users/fish/Dropbox/ost2/ost2/utils/gunicorn/ost2-debug.py wsgi_debug
directory=/Users/fish/Dropbox/ost2/ost2
priority=500
; (etc)

[program:ost2-reloader]
autostart=true
autorestart=false
directory=/tmp
command=/usr/local/share/python/watchmedo shell-command\ 
--patterns="*.py;*.txt;*.html;*.css;*.less;*.js;*.coffee"\
-R --command='kill -HUP $(cat /usr/local/gunicorn/gunicorn.pid)'\
/Users/fish/Dropbox/ost2/ost2/
priority=996
; (etc)

(N.B. Я помещаю слэши в этот образец перед новыми строками, которые на самом деле не находятся в файле conf - я вставил эти строки для четкости, я не уверен, работает ли IRL)

Первая программа - это процесс gunicorn, который я запускаю в одном потоке во время разработки, чтобы использовать отладчик Werkzeug. Вторая часть представляет собой интересный бит: эта команда говорит: "Убейте процесс, указанный файлом PID gunicorn, когда есть изменение в файле в этом дереве каталогов, если суффикс файла соответствует одному из этого списка".

Работает как очарование для многих, включая меня. Если вы этого не знаете, watchdog очень полезен и заслуживает внимания, сам по себе.