是否可以扩展特定的 Heroku Worker?

Is it possible scale a specific Heroku Worker?

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

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

如果这不可能,那么我想知道是否有人知道如何捕获 "scaling down event"(即发送给要按比例缩小的随机工作人员的某些信号,例如 SIGTERM 或SIGKILL?).

如有任何建议,我们将不胜感激。

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

所以你可以有一个监控进程来查找你的应用程序中的测功机数量(再次使用 Heroku API,你可以 list dynos),并根据需要启动新的测功机.

每个测功机都会执行您需要它执行的工作,然后自行关闭。 唯一被放大并且 运行 永久的测功机是你的监控进程。