[英]uWSGI Emperor does not reload Vassal by touching the .ini file
我有多个 uWSGI vassals,都由 uwsgi 皇帝监控。 我更新了我的应用程序 (Django) 的代码,我希望皇帝对其中一个封臣执行一次干净的重新加载。 要做到这一点,我
touch vassal-foo.ini
在日志中,我看到[emperor] reload the uwsgi instance vassal-foo.ini
。 这听起来很有希望,但该应用程序并未重新加载。 它继续运行旧版本。 检查进程(PID)启动时间,确实没有重启。
任何提示可能导致这种情况的原因? 一些可能不常见的事情:
initctl
下运行kill -9
使 vassal 触发正确的重新加载(显然)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
问题是你的 vassal 没有在主模式下运行。
uwsgi 重新加载 a 的所有方式都需要主进程。
在皇帝模式下,当你触摸 ini 时,皇帝会向 vassal 发出一声叹息,并在日志中记录 vassal 正在重新加载。 但是如果 vassal 没有主人,它就会忽略 sighup。 所以这就是为什么您在日志中看到重新加载但没有发生任何事情的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.