我刚刚在虚拟环境中安装了uwsgi
。pip 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