我在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插件;
答案 0 :(得分:2)
你的cron工作从未再次运行,因为Heroku dyno去睡觉了。 https://devcenter.heroku.com/articles/dynos#dyno-sleeping
为了让你的cron作业被执行,你需要让Heroku应用程序保持全天候醒来。要确保您的Heroku应用程序不会进入睡眠状态,请安装NewRelic Heroku Addon,您可以设置可用性监视。您提供NewRelic每30秒ping一次的URL,从而保持您的应用程序清醒。此功能的目的是在出于业务和性能原因导致您的网站出现故障时提醒您,但它还可以防止您的应用空闲。
希望它有所帮助!