You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Python应用至Heroku遇H10错误,求教Waitress集成方法

解决Heroku H10错误并集成Waitress部署Flask应用

一、集成Waitress替代Flask开发服务器

Flask自带的app.run()仅适用于开发环境,生产环境需要使用Waitress这类稳定的WSGI服务器,操作步骤如下:

  1. 添加Waitress依赖
    在项目的requirements.txt中加入waitress,或本地执行安装命令:
pip install waitress
  1. 修改主应用启动逻辑
    将主Python文件末尾的app.run(port=PORT)替换为Waitress的启动代码,同时兼容Heroku的端口环境变量:
if __name__ == '__main__':
    from waitress import serve
    # 优先读取Heroku提供的PORT环境变量,本地测试 fallback到ROOT_PORT
    port = int(os.environ.get('PORT', ROOT_PORT))
    # 绑定0.0.0.0允许外部访问,符合Heroku的网络要求
    serve(app, host='0.0.0.0', port=port)

二、排查并修复H10错误(应用启动失败)

H10错误的核心是应用无法正常启动,结合你的代码,重点修复以下问题:

1. 代码逻辑/语法错误(直接导致崩溃)

你的代码存在多处变量名错误,必须修正:

  • route_myapp_data函数中,exchange_data.append(...)应改为app_data.append(...)(exchange_data未定义)
  • route_known_addresses函数中,所有main变量应改为data(你定义的实例是data = Data())
  • route_exchanges函数中,exchange_pool.exchange_data()应改为data_pool.exchange_data()(实例变量是data_pool)
  • 节点同步代码中,data.replace_length(result_data.length)应改为data.replace_length(result_main.length)(同步的实例是result_main)
  • 种子数据代码块中,main.add_folder(...)应改为data.add_folder(...)(实例变量是data)

2. 配置Heroku Procfile

项目根目录创建无后缀的Procfile,内容根据你的服务类型配置:

web: python your_main_file.py
worker: python worker.py

将your_main_file.py替换为你的实际主文件名,比如app.py

3. 完善requirements.txt依赖列表

确保所有依赖都列在requirements.txt中,至少包含:

Flask
flask-cors
requests
waitress
redis
rq

可通过pip freeze > requirements.txt生成后,清理本地无关依赖。

4. 端口配置适配Heroku

Heroku不会使用本地硬编码的端口,必须通过os.environ.get('PORT')读取平台提供的端口,Waitress的启动代码已处理此逻辑,不要硬指定端口值。

5. Redis服务配置(针对worker)

Heroku上运行worker需要Redis服务,添加官方Redis插件:

heroku addons:create heroku-redis:hobby-dev

插件会自动设置REDIS_URL环境变量,worker代码中的redis.from_url(redis_url)会正确连接服务。

三、部署验证

  1. 本地测试:修复代码后,用Waitress启动应用,确认无报错
python your_main_file.py
  1. 提交代码到Heroku:
git add .
git commit -m "Fix bugs and integrate Waitress"
git push heroku main
  1. 查看日志排查问题:若仍有错误,通过日志定位原因
heroku logs --tail

内容的提问来源于stack exchange,提问作者htrgotoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:50:23