如何在Heroku上使用supervisord

时间:2017-10-18 22:11:38

标签: python heroku supervisord supervisor

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

1 个答案:

答案 0 :(得分:2)

技术上可以让Heroku dyno运行某种父级管理程序进程,它会生成并自动重启子进程。我自己用forever-monitor做了这个。我的Procfile有一个工作线process type的一行,它运行一个产生和管理子进程的父进程。

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

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

如果可能的话,最好是允许Heroku将长时间运行的python脚本安排为单独的工作进程类型,每个类型都有自己的dyno(s)。如果你能负担得起(成本方面),那么Heroku将在失败或重启后自动重启每个脚本(参见Restarting)。如果这就是您所需要的,那么您根本不需要运行自己的“主管” - 让Heroku为您处理(它做得非常好)。