0

我目前正在尝试开发一个严重依赖 heroku 工作人员(执行 NodeJS 脚本,在此处无法切换到 Ruby/Rails)处理长时间运行(1 - 168 小时)后台作业的应用程序。我的问题是某些工作可能会在 1 小时内完成,而其他工作可能需要 168 小时,而且我不想等到我所有的工人都完成后才开始缩减规模,因为 Heroku 会按每个工人的那段时间向我收费.

我对每天重新启动一次 dynos 没有任何问题,但我想知道是否有可能(以及如何)通过 Heroku API 或任何其他方式(可能从工作进程中)缩小特定的 Heroku 工作人员本身,尽管从内部终止进程似乎只会导致工人重新启动自己,而不是缩小自己)。

如果这是不可能的,那么我想知道是否有人知道如何捕获“缩小事件”(即是否有一些信号发送到要缩小的随机工作人员,如 SIGTERM 或 SIGKILL?)。

任何建议都值得赞赏。

4

1 回答 1

0

一种方法是使用一次性 dynos
Heroku API 将允许您创建一个 dyno。以这种方式创建的 Dynos 不会由 Heroku 管理,这意味着如果它们停止,它们不会自动重新启动。

因此,您可以有一个监视进程来查找您在应用程序上拥有的 dyno 数量(再次使用 Heroku API,您可以列出 dynos),并根据需要启动新的。

每个测功机都会执行您需要它执行的工作,并自行关闭。唯一可以扩展并永久运行的测功机将是您的​​监控进程。

于 2018-12-05T09:13:16.560 回答