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

Heroku部署FastAPI(Python)项目出现网络错误,多轮配置后仍无法解决求助

问题排查步骤

1. 优先修正requirements.txt依赖错误

你目前的依赖列表存在多个冗余和冲突项,是大概率的报错来源:

  • 移除标准库冗余依赖:datetime、typing、dataclasses都是Python3.7+内置模块,不需要在requirements.txt中声明,强制安装会触发版本冲突
  • 替换错误的依赖包:
    • 单独安装的bson包和MongoDB驱动motor内置的bson模块冲突,直接删除bson这一行
    • 你写的jose是无效依赖,正确的JWT依赖是python-jose[cryptography],把jose替换成这个
  • 可选优化:删除开发环境依赖pylint、astroid,生产环境不需要这两个包,减少构建失败概率

修正后的参考requirements.txt内容:

appdirs
dnspython
email-validator
fastapi
motor
python-jose[cryptography]
passlib
typing-extensions
pydantic
starlette
uvicorn
gunicorn
h11
click
websockets

2. 统一Procfile配置

你之前试的多个配置里,优先用gunicorn托管uvicorn的写法,这是Heroku部署FastAPI的标准最佳实践,直接固定为下面的写法即可,不要加多余的引号:

web: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

注意:Procfile没有后缀名,确保你上传的文件名称就是Procfile,不是Procfile.txt,也不要小写开头,Heroku对文件名大小写敏感。

3. 确认runtime.txt的Python版本兼容性

不要用太新的测试版本,也不要用低于3.7的旧版本,优先选Heroku官方支持的稳定版本,比如3.9、3.10,runtime.txt里直接写一行即可,比如:

python-3.10.12

注意版本号前缀必须是python-,不要只写版本号。

4. 本地验证后再部署

部署前先在本地跑一次gunicorn启动命令,确认本地能正常启动,排除代码本身的语法错误、导入错误问题:

gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

如果本地启动失败,先解决本地的代码问题再部署到Heroku。

5. 查看Heroku日志定位具体错误

如果以上操作都做完还是报错,直接在Heroku CLI里跑命令查看实时日志,能看到具体的错误栈:
heroku logs --tail
常见的错误还包括:

  • 入口文件名称不是main.py,对应修改Procfile里的入口名即可
  • 环境变量配置错误,比如数据库连接串没有加白名单,MongoDB Atlas要把Heroku的IP段加入访问白名单,或者直接开允许所有IP访问测试
  • 端口绑定错误,不要在代码里硬写端口,完全交给Heroku的PORT环境变量即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:09:02