我正在使用 uWSGI 在 Emperor 模式下运行 Django 站点。我发现,虽然触碰特定应用程序的 uwsgi.ini 文件确实会导致 Emperor 进程重新加载该 vassal(根据日志文件),但重新加载不足以获取更改。具体来说,更改用于配置 Django 站点的 .env 文件。
如果我将特定于应用程序的 uwsgi.ini 文件移出 vassals 文件夹并重新放入,它就会正常工作。大概是因为一旦 .ini 文件丢失,emperor 进程就会杀死 vassals,并在文件重新出现时重新启动它们。使用 systemd 重新启动 uwsgi Emperor 也可以正常工作。
我宁愿不重新启动 Emperor 进程,而且移动 ini 文件的过程感觉非常笨拙。
在 Emperor 后面重新启动单个 Django 站点并且仍然获取站点设置的更改的正确方法是什么?
/etc/uwsgi/emperor.ini
[uwsgi]
emperor = /etc/uwsgi/vassals
uid = www-data
gid = www-data
limit-as = 1024
logto = /tmp/uwsgi.log
/etc/uwsgi/vassals/demo-app.ini
[uwsgi]
chdir=/home/demo-app/demo-app
virtualenv=/home/demo-app/.venv
module=demo_app.wsgi
master = true
processes = 2
socket = 127.0.0.1:1111
chmod-socket = 664
vacuum = true
答案1
要重启单个附庸,只需触摸文件
# touch /etc/uwsgi/vassals/demo-app.ini
Uwsgi 将检测更改并重新启动该单个服务。