gunicorn autoreload on source change gunicorn autoreload on source change python python

gunicorn autoreload on source change


While this is old question you need to know that ever since version 19.0 gunicorn has had the --reload option.So now no third party tools are needed.


One option would be to use the --max-requests to limit each spawned process to serving only one request by adding --max-requests 1 to the startup options. Every newly spawned process should see your code changes and in a development environment the extra startup time per request should be negligible.


Bryan Helmig came up with this and I modified it to use run_gunicorn instead of launching gunicorn directly, to make it possible to just cut and paste these 3 commands into a shell in your django project root folder (with your virtualenv activated):

pip install watchdog -Uwatchmedo shell-command --patterns="*.py;*.html;*.css;*.js" --recursive --command='echo "${watch_src_path}" && kill -HUP `cat gunicorn.pid`' . &python manage.py run_gunicorn 127.0.0.1:80 --pid=gunicorn.pid