我正在尝试在Heroku上托管我的Twitter机器人,每小时发布一次。但是当我尝试部署时,它给了我这个错误:
`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');
其中runTheBot()
使用Twit发出一些API请求。
有趣的是,如果我将cron作业设置为超过60秒运行,比如说每10秒一次('* / 10 * * * * *'),它就能正常工作。如果我每分钟运行一次('0 * * * * *'),它甚至可以工作。
这是我的Procfile:
web: node index.js -p $PORT
Heroku与此cron库不兼容吗?我应该使用Heroku Scheduler吗?
答案 0 :(得分:0)
我通过将个人资料中的流程类型从web
更改为worker
来解决了这个问题。由于Heroku由于某种原因默认将它设置为0,我还必须手动将工作人员的dynos从0扩展到1。