我有一个正在执行 bash 脚本的 django 应用程序。我需要重新启动 nginx 服务器,所以我运行/etc/init.d/nginx reload
效果很好。我一直在使用restart uwsgi
uwsgi,但我需要正常重新加载而不是硬重启服务器。
我怎样才能做到这一点?
我目前正在通过 .bashrc 运行 bashreload uwsgi
函数subprocess.popen
。它似乎只是重新加载调用子进程的进程,而不是由 uwsgi 实例托管的所有站点。importing uwsgi
并且运行uwsgi.reload
似乎也只影响调用过程。是否有通过 python 或 bash 切换 uwsgi 的开关,允许重新启动所有 uwsgi 进程
git*_*rik 13
签到
您可以通过向您的 uWSGI 进程发送 SIGHUP 信号来重新启动 uWSGI,如下所示:
kill -HUP <process-id>
Run Code Online (Sandbox Code Playgroud)
如果您想在 bash 脚本中自动执行此操作,您可以通过提供pidfile
选项让 uWSGI 写掉它的进程 ID ,例如:
--pidfile=/tmp/uwsgi.pid
Run Code Online (Sandbox Code Playgroud)
然后您可以通过以下方式重新加载进程:
uwsgi --reload /tmp/uwsgi.pid
Run Code Online (Sandbox Code Playgroud)
触摸重新加载
您还可以使用touch-reload
参数启动 uWSGI,该参数指定一个文件,当触摸时使 uWSGI 重新加载:
--touch-reload=/some/file
Run Code Online (Sandbox Code Playgroud)
然后 uWSGI 将在您触摸该文件时重新加载:
touch /some/file
Run Code Online (Sandbox Code Playgroud)
请记住,您只能在以主进程模式运行时重新加载 uWSGI,但这通常是这种情况。
更多信息:http : //uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server
归档时间: |
|
查看次数: |
20101 次 |
最近记录: |