我如何在启动后停止 uWSGI 服务器?

How do I stop a uWSGI server after starting it?

我有一个 Python 金字塔应用程序,我正在 运行 像这样使用 uwsgi:

 sudo /finance/finance-env/bin/uwsgi --ini-paste-logged /finance/corefinance/production.ini

一旦 运行 并且我的 window 超时,我无法在不重新启动整个机器的情况下停止服务器。如何停止服务器?

您可以使用标准 Linux 命令终止 uwsgi 进程:

killall uwsgi

# ps ax|grep uwsgi
12345
# kill -s QUIT 12345

后一个命令允许您进行优雅的重新加载或立即终止您发送的整个堆栈 depending on the signal

但是,您使用的方法通常不会在生产中使用:通常您会告诉 OS 在启动时启动您的应用程序,并在它崩溃时重新启动它。否则你一定会在最不方便的时候得到惊喜 :) Uwsgi 文档有 examples of start scripts/jobs for Upstart/Systemd.

还要确保你真的没有 运行 uwsgi 作为 root - 命令中的 sudo 让我感到畏缩,但我希望你有 uid/gid 选项在你的 production.ini 所以 Uwsgi 在启动时更改有效用户。 运行 将网络服务器设置为 root 绝不是一个好主意。

如果您将 --pidfile arg 添加到启动命令

 sudo /finance/finance-env/bin/uwsgi --ini-paste-logged /finance/corefinance/production.ini --pidfile=/tmp/finance.pid

您可以使用以下命令停止它

sudo /finance/finance-env/bin/uwsgi --stop /tmp/finance.pid

也可以使用以下命令重启

 sudo /finance/finance-env/bin/uwsgi --reload /tmp/finance.pid