2017-10-18 95 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错误配置自动通知(通过电子邮件,闲置等)。 –