2014-06-11 47 views
0

我在我的本地机器上安装了cron模块,我在heroku上部署了我的应用程序。node.js`cron`模块不能在heroku上工作

new cronJob('00 00 * * * *', function() { 
    log.info('every hour'); 
}, null, true); 

new cronJob('00 00 00 * * *', function() { 
    log.info('every day'); 
}, null, true); 

第一个cronJob每小时执行一次log.info函数,第二个 - 每一天执行一次。脚本在我的本地机器上完美运行,但不适用于heroku。

+0

您是否将其添加到您的package.json文件中https://devcenter.heroku.com/articles/getting-started-with-nodejs#declare-dependencies-with-npm – KeepCalmAndCarryOn

+0

@KeepCalmAndCarryOn当然可以。除此之外的所有模块都能完美工 – user3215609

回答

1

您的cron工作永远不会运行,因为Heroku dyno进入睡眠状态。 https://devcenter.heroku.com/articles/dynos#dyno-sleeping

尝试通过访问应用中的某个URL来唤醒它,并查看是否执行了cron作业。

为了让您的cron作业得以执行,您需要让Heroku应用程序全天候保持清醒状态。要确保您的Heroku应用程序不会进入睡眠状态,请安装NewRelic Heroku Addon,您可以设置可用性监控。你提供一个每30秒钟NewRelic ping的URL,因此保持你的应用程序清醒。此功能的预期目的是为了提醒您,如果您的网站由于业务和性能原因而停止运行,但它还具有防止应用空闲的额外好处。

希望它有帮助!

相关问题