我有多个uWSGI附庸,全部由uwsgi皇帝监视。我更新了我的应用程序(Django)的代码,并希望皇帝对其中一个附庸进行干净的重新加载。为此,我
touch vassal-foo.ini
在日志中,我看到[emperor] reload the uwsgi instance vassal-foo.ini
。这听起来很有希望,但该应用未重新加载。它继续运行旧版本。检查进程(PID)的启动时间,实际上,它尚未重新启动。
任何提示可能是什么原因造成的?可能很少见的几件事:
initctl
下运行kill -9
-进入附庸会触发正确的重新加载(显然)threading.Thread(target).start()
)中有一个辅助线程,运行daemon=True
我尝试过但不起作用的事情:
threading.Thread(target).start()
)touch --no-dereference vassal-foo.ini
--emperor-nofollow
起皇帝vassal-foo.ini:
master = false
processes = 1
thunder-lock = true
enable-threads = true
socket = /tmp/%n.sock
chmod-socket = 666
vacuum = true
皇帝:
exec /tmp/uwsgi --emperor /tmp/configs/uwsgi/ --die-on-term --uid me --gid me --logto /tmp/logs/uwsgi-emperor.log
uWSGI版本
$ uwsgi --version
2.0.17
答案 0 :(得分:0)
问题是您的附庸不在主模式下运行。
uwsgi重新加载a的所有方法都需要主进程。
在皇帝模式下,当您触摸ini时,皇帝会向该附庸国发送叹息,并在日志中记录该附庸国已重新载入。但是,如果附庸国没有高手,那就无视此举。因此,这就是为什么您在日志中看到重新加载但什么都没发生的原因。