部署到heroku

时间:2016-06-23 05:20:41

标签: python heroku deployment

所以我愚弄了松散的API并最终创建了一个简单的slack bot,它在一个松散的通道上发布一个站点是否启动(当提供URL时)

每当我将它部署到heroku时,它会在前60秒内运行,然后在日志中抛出这样的错误

2016-06-22T20:18:11.933928+00:00 heroku[web.1]: State changed from crashed to starting
2016-06-22T20:18:15.635404+00:00 heroku[web.1]: Starting process with command `python margo/margo.py 5000`
2016-06-22T20:18:18.724727+00:00 app[web.1]: StarterBot connected and running!
2016-06-22T20:19:15.714485+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-06-22T20:19:15.714485+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-06-22T20:19:16.857081+00:00 heroku[web.1]: Process exited with status 137
2016-06-22T20:19:16.874584+00:00 heroku[web.1]: State changed from starting to crashed

我的Procfile看起来像这样

web: python margo/margo.py 5000

我四处搜索found thisthis说我应该在PORT指定Profile,我在Procfile中更改了上面的内容。但我的只是一个简单的python脚本,而不是一个完整的Flask / Django应用程序。

任何想法的家伙我哪里错了?

修改

我读到$PORT环境变量是由heroku设置的。所以我的Procfile现在是

web: python margo/margo.py $PORT

但程序在部署时会再次崩溃并显示相同的错误消息

1 个答案:

答案 0 :(得分:0)

我通过在Heroku提供的端口上运行一个简单的HTTP服务器解决了这个问题,并使其作为后台进程运行。

更改后,我的Procfile看起来像这样

web: (python -m http.server $PORT &) && (python margo/margo.py)

因此,即使Web服务器什么都不做,它也会将自己绑定到端口并阻止应用程序进一步崩溃。