我目前正在尝试开发一个严重依赖于heroku工作程序(执行NodeJS脚本,这里没有选择切换到Ruby / Rails)的应用程序,用于处理长时间运行(1-168小时)的后台作业。我的问题是某些工作可能会在1小时内完成,而其他工作可能需要168个工作,而且我不想等到我所有的工作人员都开始缩减规模,因为Heroku会在那段时间向我收费
对于每天重新启动一次的测功机我没有问题,但是我想知道是否有可能(如果可以的话)通过Heroku API或通过任何其他方式(也许从内部)扩展特定的Heroku工作程序。工作进程本身,尽管从内部终止该进程似乎只会导致工作进程重新启动,而不是缩小规模。
如果这不可能,那么我想知道是否有人知道如何捕获“缩减事件”(即是否向SIGTERM或SIGKILL这样的信号发送给要缩减的随机工作者? )。
任何建议都是值得的。
答案 0 :(得分:0)
一种方法是使用one-off dynos。
Heroku API将允许您create a dyno。用这种方式创建的Dynos将不受Heroku的管理,这意味着如果停止,则它们不会自动重新启动。
因此,您可以使用一个监视进程来查找应用程序上的测功数(再次使用Heroku API,您可以list dynos),然后根据需要启动新的测功。
每个dyno都会执行您需要执行的工作,然后将其自身调低。 唯一可以扩展并永久运行的测功机是您的监视进程。