2015-06-01 24 views
0

我试图在Heroku上托管我的Twitter机器人,每小时鸣叫一次。但是,当我尝试部署,它给了我这个错误:Heroku R10启动超时+ Node.js Cron

`Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch` 

我做了一些谷歌搜索,发现当您尝试指定一个明确的端口,而不是使用process.env.$PORT这通常发生,但我不指定任何在我的代码,这在本质上只是这个港口:

var CronJob = require('cron').CronJob; 
new CronJob('0 0 * * * *', function() { 
    //tweet once, once an hour 
    runTheBot(); 
}, null, true, 'America/New_York'); 

使用Twit其中runTheBot(),使一些API请求。有趣的是,如果我设置cron作业运行频率超过60秒,比如说每10秒钟一次('*/10 * * * * *'),它就可以正常工作。它甚至可以运行,如果我每分钟运行一次('0 * * * * *')。

这里是我的Procfile:

web: node index.js -p $PORT 

的Heroku是这个cron的库不兼容?我应该用Heroku Scheduler代替吗?

回答

0

我通过将配置文件中的进程类型从web更改为worker来解决此问题。由于Heroku由于某种原因默认设置为0,我还不得不手动将工作人员的驱动程序从0扩展到1。