我在 Heroku 上部署了一个应用程序:myapp
我在其中写了一些 cron 代码:
var time = require('time');
var CronJob = require('cron').CronJob;
var job = new CronJob({
cronTime: '00 45 12 * * *',
onTick: clearReserve,
start: true,
timeZone: 'Asia/Shanghai'
});
我的目的是每天在特定时间调用名为“clearReserve”的函数。 但它只在我将代码上传到 Heroku 的第一天起作用,并且再也不会执行此 cron 作业。
PS:这个“clearReserve”函数将操作我的数据库,我使用我在 MongoLab 中创建的 MongoLab URI,而不是 Heroku 插件;
最佳答案
你的 cron 作业再也不会运行,因为 Heroku dyno 进入休眠状态。 https://devcenter.heroku.com/articles/dynos#dyno-sleeping
为了执行您的 cron 作业,您需要保持 Heroku 应用程序 24/7 保持唤醒状态。为了确保您的 Heroku 应用程序不会进入休眠状态,请安装 NewRelic Heroku Addon,您可以设置可用性监控。您提供一个 URL,NewRelic 每 30 秒 ping 一次,从而保持您的应用程序处于唤醒状态。此功能的预期目的是在您的网站因业务和性能原因而停机时向您发出警报,但它还有一个额外的好处,可以防止您的应用程序闲置。
希望对你有帮助!
关于node.js - node-cron 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27289269/