如何在 Heroku 上使用 supervisord

How to use supervisord on Heroku

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

从技术上讲,拥有 Heroku dyno 运行 某种父主管进程是可能的,它会生成并自动重启子进程。我自己用 forever-monitor. My Procfile had a line for a worker process type 完成了此操作 运行 一个生成和管理子进程的父进程。

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

但是,您需要仔细考虑这是否适合您的用例。这种方法的一个优点是它可以使您降低测功机成本(因为您将 运行 在单个测功机而不是单独的测功机上设置子进程)。 但这确实是 "working around" Heroku 最佳实践(及其背后的 12 Factor App 方法论)。

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