所以我愚弄了松散的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 this和this说我应该在PORT
指定Profile
,我在Procfile
中更改了上面的内容。但我的只是一个简单的python脚本,而不是一个完整的Flask
/ Django
应用程序。
任何想法的家伙我哪里错了?
修改
我读到$PORT
环境变量是由heroku设置的。所以我的Procfile
现在是
web: python margo/margo.py $PORT
但程序在部署时会再次崩溃并显示相同的错误消息
答案 0 :(得分:0)
我通过在Heroku提供的端口上运行一个简单的HTTP服务器解决了这个问题,并使其作为后台进程运行。
更改后,我的Procfile
看起来像这样
web: (python -m http.server $PORT &) && (python margo/margo.py)
因此,即使Web服务器什么都不做,它也会将自己绑定到端口并阻止应用程序进一步崩溃。