当配置中没有 pidfile 时如何停止 uwsgi?

当配置中没有 pidfile 时如何停止 uwsgi?

我刚刚在虚拟环境中安装了uwsgipip install uwsgi在“ini”文件中我使用了:

socket = 127.0.0.1:3000
# no pidfile option

然后运行uwsgi --ini config.ini

但是如何停止这个 uwsgi 实例?
uwsgi --stop ...需要一个 pid 文件。我不能使用地址:

open("127.0.0.1:3000"): No such file or directory [core/io.c line 505]

如果被杀死 - uwsgi 只会自行重生。

答案1

ps ax | grep uwsgi
15005 pts/4    S      0:00 /ve/path/bin/uwsgi --ini config.ini
15006 pts/4    S      0:00 /ve/path/bin/uwsgi --ini config.ini
15007 pts/4    S      0:00 /ve/path/bin/uwsgi --ini config.ini

killall -s INT /ve/path/bin/uwsgi

答案2

众所周知,你不能仅通过 kill 来终止 uwsgi。第二个要点:http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html

直到 uWSGI 2.1,默认情况下,向 uWSGI 发送 SIGTERM 信号意味着“粗暴地重新加载堆栈”,而惯例是在 SIGTERM 时关闭应用程序。要关闭 uWSGI,请使用 SIGINT 或 SIGQUIT。如果您绝对不能忍受 uWSGI 对 SIGTERM 如此不尊重,请务必启用 die-on-term 选项。幸运的是,这个糟糕的选择已在 uWSGI 2.1 中得到修复

答案3

与上面的答案类似,在 Ubuntu 或 Debian 中,您只需执行sudo killall -9 uwsgi。不过我确实想知道 uwsgi 是否提供了一种停止自身的方法。

答案4

就我而言,uwsgi 是由另一个进程启动的。Sergey 的回答帮助我找到了是哪个进程,但无法终止它。Supervisorctl 对我有用。

sudo supervisorctl stop uwsgi

相关内容