Me encontré con variaciones de este problema también, como se aconseja en el artículo vinculado por el Sr. Pokomy, matar el proceso maestro de gunicornio con una señal HUP
parece hacer el truco.
Uno puede configurar la recarga automática en el archivo guardar fácilmente, si utiliza el módulo python watchdog
; la configuración es bastante explica por sí mismo, así que aquí está un fragmento de mi desarrollo supervisord.conf archivo:
[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 I puso entre las dos barras en esa muestra antes de los saltos de línea que no están realmente en el archivo conf - Inserté esas líneas nuevas para la legibilidad; no estoy seguro si eso funciona IRL)
El primer programa es el proceso de gunicornio, que ejecuto en un solo hilo durante el desarrollo para utilizar el depurador Werkzeug. La segunda parte es la parte interesante: el comando dice: "mata el proceso especificado por el archivo PID de Gunicorn siempre que haya un cambio en un archivo en este árbol de directorios si el sufijo del archivo coincide con uno de esta lista".
Funciona como un encanto para muchos incluyéndome a mí. Si no lo sabe, watchdog
es muy útil y vale la pena verlo, por derecho propio.
Esto es genial, y si está usando un supervisor para administrar gunicornio, puede reemplazar su comando cat con: supervisorctl status gunicorn_task_name | sed-e 's /.* pid \ ([0-9] \ {1,5 \} \). */\ 1/g' –