我遇到了這個問題的變化 - 正如Pokomy先生所鏈接的文章中所建議的,用HUP
信號殺死gunicorn主進程似乎有訣竅。
如果您使用python watchdog
模塊,可以輕鬆設置文件自動重裝;設置其實是不言自明的,所以這裏從我的發展supervisord.conf文件的一個片段:實際上不是在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)
(注:我把斜線是樣本中 - 我插入這些換行符的易讀性;我不確定這是否工作IRL)
第一個程序是gunicorn進程,我在開發過程中運行一個單線程以使用Werkzeug調試器。第二部分是有趣的一點:該命令說,「如果文件的後綴與該列表中的一個匹配,則在該目錄樹中的文件發生更改時,終止由gunicorn PID文件指定的進程」。
對於包括我在內的許多人來說,它就像一種魅力。如果你不知道,watchdog
是非常有用的,值得一看,在它自己的權利。
這很棒,如果您使用主管來管理gunicorn,您可以將您的cat命令替換爲:supervisorctl status gunicorn_task_name | sed -e's /.* pid \([0-9] \ {1,5 \} \)。*/\ 1/g' – 2013-04-12 21:43:32