Я также столкнулся с вариантами этой проблемы - как было рекомендовано в статье, на которую ссылается г-н Покоми, убийство мастер-процесса gunicorn с помощью сигнала HUP
, похоже, помогает.
Oneможет легко настроить автоматическую перезагрузку при сохранении файла, если вы используете модуль 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)
(NB. Я поставил косые черты в этом примере перед символами новой строки, которых на самом деле нет в файле conf- Я добавил эти новые строки для удобочитаемости; я не уверен, что это работает IRL)
Первая программа - это процесс gunicorn, который я запускаю в одном потоке во время разработки, чтобы использовать отладчик Werkzeug.Вторая часть интересна: эта команда говорит: «завершать процесс, указанный в PID-файле gunicorn, всякий раз, когда в этом дереве каталогов происходит изменение, если суффикс файла совпадает с суффиксом этого списка».
Работает как очарование для многих, включая меня.Если вы этого не знаете, watchdog
очень полезен и стоит посмотреть сам по себе.