使用 Supervisord 时重新加载 UWSGI 的信号?

使用 Supervisord 时重新加载 UWSGI 的信号?

我一直在 Nginx 后面使用 UWSGI,并且我已设置 Supervisord 在服务器重启时重新启动 Nginx 和 UWSGI 实例。

我正在调试我的应用程序,有时需要重新加载应用程序。根据这一页我应该发送 SIGHUP 以便正常重新加载。

我可以找到停止信号配置设置这一页,但我找不到任何与“reloadsignal”或“restartsignal”相关的条目。

有任何想法吗?

答案1

stopsignal

    The signal used to kill the program when a stop is requested. 
    This can be any of TERM, HUP, INT, QUIT, KILL, USR1, or USR2.

    Default: TERM

    Required: No.

    Introduced: 3.0

stopsignal=HUP是你正在寻找的:

[program:uwsgi]
user = uwsgi
command=/usr/sbin/uwsgi ...
autostart=true
autorestart=true
stderr_logfile = /var/log/uwsgi/err.log
stdout_logfile = /var/log/uwsgi/out.log
stopsignal=HUP

答案2

我已经报告了此问题这里,我希望它会被接受为一个功能请求,并且我们都有机会使用该功能。

答案3

如果你运行,supervisorctl status你会看到 uwsgi 进程的 pid。类似这样,

$ supervisorctl status
uwsgi                           RUNNING    pid 25700, uptime 0:15:48

您需要做的就是手动向此 pid 发送 HUP 信号。

kill -HUP 25700

你可以通过以下方式实现自动化,

supervisorctl status signal | grep -o 'pid\s\+\d*'| awk '{print $2}' | xargs -n 1  kill -HUP

答案4

使用此supervisorctl 状态信号 | grep -o 'pid\s+\d*'| awk '{print $2}' | xargs -n 1 kill -HUP 进行优雅重新加载后,Nginx 无法从上游获取连接

相关内容