我有一个正在执行bash脚本的django应用程序。 我需要nginx服务器重新启动,所以我运行/etc/init.d/nginx reload这很好。 我一直在使用restart uwsgi uwsgi,但我需要做一个优雅的重新加载,而不是硬重启服务器。
我该怎么做?
我目前正在运行一个bash通过reload uwsgi函数。 它似乎只是重新加载调用subprocess,而不是由uwsgi实例托pipe的所有网站的过程。 importing uwsgi uwsgi.reload并运行uwsgi.reload似乎也只影响调用过程。 是否有一个开关为uwsgi通过Python或bash,允许重新启动所有uwsgi进程
你可以在Python中做到这一点
import uwsgi uwsgi.reload()
SIGHUP
您可以通过发送SIGHUP信号到您的uWSGI进程来重新启动uWSGI,如下所示:
kill -HUP <process-id>
如果要在bash脚本中自动执行此操作,可以通过提供pidfile选项来让uWSGI写入它的进程ID,例如:
--pidfile=/tmp/uwsgi.pid
然后你可以通过以下方式重新加载进程:
uwsgi --reload /tmp/uwsgi.pid
触摸重装
您也可以使用touch-reload参数启动uWSGI,该参数指定一个在被触摸时使uWSGI重新加载的文件:
--touch-reload=/some/file
然后uWSGI将在您触摸文件时重新加载:
touch /some/file
请记住,只能在使用主进程模式运行时重新加载uWSGI,但通常情况下是这样。
更多信息: http : //uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server