Ответ 1
Попробуйте следующее:
$ kill -HUP masterpid
Кроме того, посмотрите на некоторые примечания внизу после сообщения.
Я получаю непоследовательное поведение при перегрузке кода с помощью приложения Django 1.3 и gunicorn 0.12.1, работающего внутри виртуального файла.
Gunicorn не перезагружает мое приложение должным образом, даже при перезагрузке конкретного PID пулеметного процесса. Когда я запускаю базовый runserver
(через Django, используя команду manage.py
), это не проблема.
Когда я удаляю и воссоздаю свой virtualenv, пушки, как и ожидалось, запускается с новым кодом.
Есть ли кеш Python или что-то еще? Я также попытался удалить все *.pyc
файлы.
Попробуйте следующее:
$ kill -HUP masterpid
Кроме того, посмотрите на некоторые примечания внизу после сообщения.
Я столкнулся с вариациями этой проблемы, как это было сказано в статье, связанной с г-ном Покоми, убивая мастер-процесс пушки с сигналом 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
очень полезен и заслуживает внимания, сам по себе.