2015-06-01 64 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。