Heroku - 当应用程序 "asleep" 时,CRON 作业是否继续工作?

Heroku - DO CRON jobs keep working when the app is "asleep"?

我已将我的应用编程为每天 9 a.m 触发一些 CRON Jobs,它在 localhost 上运行。

我的应用程序 运行 处于沙盒模式,只有一个测功机,所以我知道它在非 activity 1 小时后进入睡眠状态。

当应用程序进入休眠状态时,内部到底发生了什么?这是我的 Cron Jobs 不起作用的原因吗?验证起来比较麻烦...

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

应用休眠时间到了 Heroku sends the SIGTERM signal to the process which will most likely kill the process in your case, preventing the cron jobs from running. It is possible to catch and ignore the SIGTERM signal but Heroku will in that case probably just forcibly shut down your process using the SIGKILL signal, like it does when restarting dynos

一种可能的解决方法是在您的应用中使用 New Relic addon to regularly ping/monitor a URL,防止它休眠。但是,将这种方法与 node-cron 一起使用可能会出现问题,因为 Heroku 每天至少重启一次所有测功机。如果在 cron 作业触发时重新启动,它可能不会在当天触发 cron 作业。

另一种可能性是不使用 node-cron,而是使用 Heroku Scheduler addon 到 运行 你的周期性任务。