Can't remember where, but I read uWSGI can reload itself like Django development server when a project script is modified. I can't find that in the docs, nor in the internets. How can I do this?
I use Ubuntu 12.04 on my working machines and Debian Squeeze on stage & production server, Django 1.4 and uWSGI 1.2.
Reference: http://projects.unbit.it/uwsgi/wiki/Management
If you have started uwsgi with the
--touch-reload=/path/to/special/file/usually/the.ini
option, reloading your uWSGI is a simple matter of touch reloading that file withtouch /path/to/special/file/usually/the.ini
And if you want the "autoreload" capability, this is the tip that gets this done: http://projects.unbit.it/uwsgi/wiki/TipsAndTricks#uWSGIdjangoautoreloadmode
There is a
py-autoreload=N
option in newer releases. Just setN
to the frequency (in seconds) of checks (3 is a good value).If you don't want lose the django autoreload, register this reload method (i.e: in settings.py):
Now if you change your code it will be reloaded.
Author: Simone Federici
uwsgi also allow restart using kill SIGNAL. I use it as below:
If you run same command, you will see child procs pid will be changed as they are re-spawned by master. Also check uwsgi config for master/worker proc counts. This method is easy to integrate with ansible or other automation tools so goes easy to for remote use.
This doesn't need your original proc to be started with --touch-reload.
As stated in docs to make uWSGI gracefully restart.