节点 Cron 不在 heroku 服务器上执行

Node Cron not execute on heroku server

我有一个应用程序后端,在 heroku 服务器上部署了 express 节点。我的后端应用程序使用 node-cron 进行调度。我设置了一个时间表,每 7 a.m.,但在 7 a.m 发送一次 FCM 通知。没有收到通知,我检查了 heroku 服务器上的日志,那里什么也没发生(之前我在应用程序上写了 console.log

这听起来像是您为 cron 调度程序设置的时区的问题。

尝试转换 7a.m。到 UTC 时区并再次 运行 调度程序。

我假设您使用的是免费版的 Heroku。

如果 Heroku 应用程序持续 30 分钟没有收到任何流量,它将进入不活动状态。这样做是为了保留您的免费测功机小时数。

解决此问题的一种方法是在 Linux 机器(最好是像 Raspberry Pi 这样的微型计算机,因为它功率低)中创建一个 cronjob,它将执行 GET 分钟的请求在 node-cron 运行之前。这将防止实例进入休眠状态。建议为连接测试创建一个专用端点。

示例:

  • 我们先编辑crontab。
crontab -e
  • 假设您想每隔 06:55.
  • 发出一个 GET 请求
55 6 * * * curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET <YOUR_WEBSERVER_CONNECTION_TEST_ENDPOINT_LINK>

参考文献: