Gunicorn not reloading a Django application

前端 未结 2 997
花落未央
花落未央 2021-02-05 15:36

I\'m getting inconsistent code-reloading behavior, with a Django 1.3 application and gunicorn 0.12.1, running inside a virtualenv.

Gunicorn does not reload my applicatio

2条回答
  •  梦谈多话
    2021-02-05 15:52

    I ran into variations of this problem as well -- as advised in the article linked to by Mr. Pokomy, killing the gunicorn master process with a HUP signal seems to do the trick.

    One can set up auto-reloading on file save easily, if you use the python watchdog module; the setup is actually pretty self-explanatory, so here's a snippet from my development supervisord.conf file:

    [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. I put the slashes in that sample before newlines that aren't actually in the conf file -- I inserted those newlines for legibility; I am not sure if that works IRL)

    The first program is the gunicorn process, which I run in a single thread during development in order to use the Werkzeug debugger. The second part is the interesting bit: that command says, "kill the process specified by the gunicorn PID file whenever there's a change in a file in this directory tree if the file's suffix matches one from this list".

    Works like a charm for many including me. If you don't know it, watchdog is very useful and is worth a look, in its own right.

提交回复
热议问题