about 4 years ago

自從去年開始幫忙維護 PyConTW 網站的 Backend 之後,就開始愛上了 supervisor

理由

  1. Suitable for all Unix-like OS
    相容於所有 Unix-Like 系統。這讓你的 script 更有移植性。

  2. Don't need to write your script as a daemon
    你只需要顧好自己的程式邏輯,而不需要考慮 Daemonize 需要 Fork 一次還是二次的問題。supervisor 會為你打理好這一切,同時也會在程式異常終止,替你重新叫起程式。

  3. Well-defined logging mechanism
    透過設定就可以將 script 的 stdout, stderr 導到對應的 log 檔。簡單的說,任何你 print 的字串,都會被紀錄。大大的減輕 debug 時的負擔。雖然,這樣很方便,但還是建議好好規劃自己 script 的 logging strategy。

  4. Flexible - Provide privilege drop, such as changing user or directory
    透過簡單的設定,就能切換工作目錄、使用者,甚至是環境變數。如果是使用 upstart,這些都必須在自己的 script 裡面完成。

參考資料

  1. Herd UNIX processes with Supervisor
  2. What to Use Upstart (and Other Supervisors) For
  3. Make supervisor work on upstart
  4. Add a group for supervisorctl without sudo
← Introduce to Saltstack (1) - 安裝篇 Python Wheel - 打包已編譯的 Python 套件 →
 
comments powered by Disqus