I have a django application which is executing a bash script.
I require the nginx server to restart so I run /etc/init.d/nginx reload
which works great. I have been using restart uwsgi
for uwsgi but I need to do a graceful reload instead of a hard server restart.
How can I do this?
I am currently running a bash reload uwsgi
function through subprocess.popen
. It seems to be only reloading the process that is calling the subprocess not all sites being hosted by the uwsgi instance. importing uwsgi
and running uwsgi.reload
seems to also only effect the calling process. Is there a switch for either uwsgi through python or bash that allows restarting all uwsgi proces
SIGHUP
You can restart uWSGI by sending the SIGHUP signal to your uWSGI process like so:
If you want to automate this in a bash script, you can have uWSGI write away it's process id by supplying the
pidfile
option, for example like:Then you can reload the process by:
touch-reload
You can also start uWSGI with the
touch-reload
argument, which specifies a file that when touched makes uWSGI reload:Then uWSGI will reload when you touch the file:
Remember that you can only reload uWSGI when it's running with the master process mode, but that's usually the case though.
More information: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server
You can do it in python