Python Flask部署Heroku出现R10启动超时错误(配置0.0.0.0仍无效)
问题根因
- 你在
if __name__ == "__main__"中配置的host="0.0.0.0"仅在直接运行python app.py时生效,当前你通过Procfile调用waitress-serve启动应用,这段配置不会被执行 - Heroku会为每个Web进程动态分配端口,存储在环境变量
PORT中,你的waitress默认监听固定8080端口,和Heroku要求绑定的端口不一致,系统检测不到端口绑定成功,因此触发R10超时错误
解决方案
- 首先修改Procfile内容,指定waitress读取Heroku分配的端口:
web: waitress-serve --port=$PORT app:app
- (可选)如果需要兼容直接运行app.py的启动方式,修改app.py末尾的启动代码,同步适配环境变量端口:
import os # 其余原有代码保持不变 if __name__ == "__main__": port = int(os.environ.get("PORT", 5000)) app.run(host='0.0.0.0', port=port)
- 修改后重新提交部署即可。如果调整后仍有超时问题,检查应用启动阶段是否有耗时超过60秒的同步操作(如批量数据初始化、远程资源拉取等),将这类操作调整为异步执行或放到首次请求时处理即可。
内容的提问来源于stack exchange,提问作者user15486495
相关产品推荐
相关产品推荐

