2017-10-18 97 views
1

燦主管(http://supervisord.org)跑在Heroku管理/監控幾個長時間運行的Python腳本(長輪詢SOAP監聽器)或者我必須使用測功機爲每個腳本。 如果可以使用每個腳本的dyno,它們會在故障或重新啓動後自動重啓嗎? (這基本上是我所需要的,這些腳本冗餘)如何使用supervisord在Heroku

回答

2

這在技術上是可能有一個Heroku的測功機上運行的某種監管方的過程中,會派生並自動重新啓動子進程。我自己用forever-monitor做了這個。我的Procfile有一條工作線process type,它運行了一個父進程,它產生並管理子進程。

所以,是的,這是可以做到的,技術上。

然而,你需要仔細考慮這是否有利於你的用例。這種方法的一個優點是它可以使您減少代價費用(因爲您將在單個代碼器上運行子進程而不是在單獨的dynos上運行)。 但是,這確實是「解決」Heroku最佳實踐(以及它背後的12 Factor App方法論)。

如果可能的話,它可能是更好,如果你可以讓Heroku的安排您的長時間運行的Python腳本作爲單獨的工作流程類型,每個對自己DYNO(S)。如果您可以負擔得起(按成本計算),那麼Heroku會在故障或重啓後自動重啓您的每個腳本(請參閱Restarting)。如果這就是你所需要的,那麼你根本不需要管理自己的「主管」 - 讓Heroku爲你做好這件事(它做得很好)。

+0

感謝您的答案,我將使用每個過程的動態。是否還有某種通知系統會在其動態運行的進程出現「錯誤」時觸發? – LtMerlin

+0

有很多方法可以做到這一點。一種方法是添加Papertrail作爲日誌服務,然後爲Heroku錯誤配置自動通知(通過電子郵件,閒置等)。 –