簡體   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