如何通过bash脚本进行优美的uwsgi重新加载?


9

我有一个正在执行bash脚本的django应用程序。我要求Nginx服务器重新启动,所以我可以/etc/init.d/nginx reload正常运行。我一直在使用restart uwsgiuwsgi,但是我需要进行优雅的重新加载而不是重新启动硬服务器。

我怎样才能做到这一点?


我目前正在reload uwsgi通过运行bash 函数subprocess.popen。似乎只是重新加载了调用子进程的进程,而不是uwsgi实例托管的所有站点。importing uwsgi运行uwsgi.reload似乎也只会影响调用过程。是否有通过python或bash的uwsgi开关允许重新启动所有uwsgi过程

Answers:


0

您可以在python中完成

import uwsgi
uwsgi.reload()

uwsgi.reload()间歇性地工作。它似乎在我的某些过程完成之前正在重新启动服务器。我正在通过Django应用程序运行它,并希望它重新启动整个服务器。
达伦(Darren)

10

西格普

您可以通过向您的uWSGI进程发送SIGHUP信号来重启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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.