Python - Heroku 部署错误启动超时
Posted
技术标签:
【中文标题】Python - Heroku 部署错误启动超时【英文标题】:Python - Heroku deployment error boot timeout 【发布时间】:2020-10-10 17:44:06 【问题描述】:我在 python 中创建了一个流式应用程序,并尝试在几个 youtube 视频之后将其部署到 Heroku。但是,我不断收到以下错误,不知道如何更正。
2020-06-20T14:53:35.863016+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2020-06-20T14:53:35.885669+00:00 heroku[web.1]: Stopping process with SIGKILL
2020-06-20T14:53:35.970864+00:00 heroku[web.1]: Process exited with status 137
2020-06-20T14:53:36.011903+00:00 heroku[web.1]: State changed from starting to crashed
2020-06-20T14:53:36.749597+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=stockinfo-sl.herokuapp.com request_id=9ef454ce-0c45-423b-84ed-c6aa8fbd5a8f fwd="73.181.67.146" dyno= connect= service= status=503 bytes= protocol=https
这是我推送到heroku的以下文件。
app.py(在我的本地机器上运行的流式应用)
过程文件
web: sh setup.sh && streamlit run app.py
requirements.txt
pandas==1.0.3
streamlit==0.61.0
datetime
beautifulsoup4==4.9.1
requests==2.23.0
setup.sh
mkdir -p ~/.streamlit/
echo "\
[server]\n\
headless = true\n\
port = $PORT\n\
enableCORS = false\n\
\n\
" > ~/.streamlit/config.toml
我已经尝试删除应用程序并将其推回 heroku 几次,但没有运气,也没有运气重新启动 dynos。有人看到我推送的文件有什么问题吗?谢谢。
【问题讨论】:
第一条错误信息可能很关键——你的 web 进程必须绑定到一个外部可见的端口。例如,如果您使用 Flask,则需要在run()
参数中使用 host='0.0.0.0'
。见***.com/questions/36683571/…
【参考方案1】:
网络测功机必须在启动后 60 秒内绑定到其分配的 $PORT
。如果没有,则由测功机管理器终止,并记录 R10 引导超时错误。
您需要在您的 procfile 中将$PORT
传递给streamlit
:
web: sh setup.sh && streamlit run --server.port $PORT app.py
这里的文档可能会有所帮助:https://devcenter.heroku.com/articles/dynos#web-dynos
【讨论】:
以上是关于Python - Heroku 部署错误启动超时的主要内容,如果未能解决你的问题,请参考以下文章
错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT - Heroku
错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT - HEROKU ERROR
在 python 上获取“错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT”