2014-12-04 54 views
1

我部署在Heroku上的應用程序:myappnode-cron不能正常工作?

,我在裏面寫了一些代碼的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附加組件;

回答

2

由於Heroku dyno進入睡眠狀態,您的cron工作從未再次運行。 https://devcenter.heroku.com/articles/dynos#dyno-sleeping

爲了讓您的cron作業得以執行,您需要讓Heroku應用程序全天候保持清醒狀態。要確保您的Heroku應用程序不會進入睡眠狀態,請安裝NewRelic Heroku Addon,您可以設置可用性監控。你提供一個每30秒鐘NewRelic ping的URL,因此保持你的應用程序清醒。此功能的預期目的是爲了提醒您,如果您的網站由於業務和性能原因而停止運行,但它還具有防止應用空閒的額外好處。

希望它有幫助!