繁体   English   中英

uWSGI Emperor 不会通过触摸 .ini 文件重新加载 Vassal

[英]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)启动时间,确实没有重启。

任何提示可能导致这种情况的原因? 一些可能不常见的事情:

  • 皇帝和封臣都不会在主模式下运行
  • 用pip安装了Emperor,在initctl下运行
  • kill -9使 vassal 触发正确的重新加载(显然)
  • 我使用符号链接
  • 我的 python 应用程序( 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM