主管(http://supervisord.org)可以在Heroku上运行和管理/监视多个长时间运行的python脚本(长轮询SOAP侦听器),还是我必须为每个脚本使用dyno。
如果每个脚本都可以使用dyno,它们是否会在失败后自动重启或重启? (基本上就是我所需要的,这些脚本的冗余性)

最佳答案

从技术上讲,可以让Heroku dyno运行某种形式的父级主管进程,该进程会生成并自动重新启动子进程。我自己用forever-monitor完成了此操作。我的Procfile中有一行用于工作程序process type的行,该行运行生成并管理子进程的父进程。

所以是的,这可以从技术上做到。

但是,您需要仔细考虑这是否适合您的用例。这种方法的一个优点是,它可以使您减少dyno成本(因为您将在单个dyno而不是单独的dyno上运行子进程)。
但这确实是在“解决” Heroku最佳实践(及其背后的12 Factor App方法学)。

如果有可能,最好允许Heroku将长时间运行的python脚本安排为单独的工作进程类型,每种类型都使用自己的dyno。如果您能够负担得起(从成本角度考虑),那么Heroku将在失败或重新启动后自动重新启动每个脚本(请参见Restarting)。如果这是您所需要的,那么您根本就不需要运行自己的“主管”-让Heroku帮您解决这个问题(它做得很好)。

10-02 07:30