当应用程序处于睡眠状态时,Heroku - DO CRON工作继续工作&#34 ;?

时间:2015-02-03 13:55:38

标签: node.js heroku cron

我已经将我的应用编程为每天早上9点触发一些CRON Jobs,并且它适用于localhost

我的应用程序在沙盒模式下运行,只有一个dyno,所以我知道它在非活动1小时后就睡着了。

当应用程序入睡时,内部会发生什么?这是我的Cron Jobs不能工作的原因吗?验证......会很麻烦。

我使用node.js + heroku + node-cron

1 个答案:

答案 0 :(得分:2)

当应用程序暂停Heroku sends the SIGTERM signal进入您的情况时很可能会终止该进程的进程时,阻止cron作业运行。可以捕获并忽略SIGTERM信号,但Heroku在这种情况下可能只是使用SIGKILL信号强制关闭您的进程,就像when restarting dynos一样。

一种可行的解决方法是在您的应用中使用New Relic addonregularly ping/monitor a URL,防止其进入休眠状态。但是,将此方法与node-cron一起使用可能会有问题,因为Heroku每天至少重启一次所有dynos。如果在cron作业触发时重新启动,那么当天可能不会触发cron作业。

另一种可能性是使用Heroku Scheduler addon代替使用node-cron来运行您的定期任务。