我已经将我的应用编程为每天早上9点触发一些CRON Jobs
,并且它适用于localhost
。
我的应用程序在沙盒模式下运行,只有一个dyno,所以我知道它在非活动1小时后就睡着了。
当应用程序入睡时,内部会发生什么?这是我的Cron Jobs不能工作的原因吗?验证......会很麻烦。
我使用node.js + heroku + node-cron
答案 0 :(得分:2)
当应用程序暂停Heroku sends the SIGTERM signal进入您的情况时很可能会终止该进程的进程时,阻止cron作业运行。可以捕获并忽略SIGTERM信号,但Heroku在这种情况下可能只是使用SIGKILL信号强制关闭您的进程,就像when restarting dynos一样。
一种可行的解决方法是在您的应用中使用New Relic addon至regularly ping/monitor a URL,防止其进入休眠状态。但是,将此方法与node-cron一起使用可能会有问题,因为Heroku每天至少重启一次所有dynos。如果在cron作业触发时重新启动,那么当天可能不会触发cron作业。
另一种可能性是使用Heroku Scheduler addon代替使用node-cron来运行您的定期任务。