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

如何将FastAPI应用部署到Heroku?现有Procfile配置不生效

FastAPI部署到Heroku的Procfile正确配置方案

现有配置错误原因

你当前的Procfile配置存在两处核心问题:

原有错误配置:

web: gunicorn wsgi:app
api: uvicorn main:app --host=0.0.0.0 --port=${PORT:-5000}
  • Heroku仅会为web类型的进程分配公网可访问的端口,你定义的api进程无法接收外部HTTP请求,自然无法对外提供FastAPI服务
  • 无需同时启动gunicorn和uvicorn两个独立服务,FastAPI属于ASGI应用,选择对应合适的运行方式即可

正确配置方案

根据你的使用场景二选一即可:

方案1:单Uvicorn运行(适合轻量小型应用)

直接修改Procfile为如下内容即可:

web: uvicorn main:app --host=0.0.0.0 --port=${PORT}

无需设置端口默认值,Heroku会自动注入PORT环境变量供进程读取。

方案2:Gunicorn托管Uvicorn工作进程(生产环境推荐)

先确认你的requirements.txt中已经添加gunicorn、uvicorn[standard]依赖,再将Procfile修改为如下内容:

web: gunicorn main:app --workers 2 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:${PORT}

该方案通过Gunicorn管理多个Uvicorn工作进程,并发能力和稳定性远高于单Uvicorn进程,适合生产环境使用,--workers参数可以根据你的应用负载调整,常规配置为CPU核心数*2+1即可。

必做校验项

部署前请逐一确认以下配置:

  • 项目根目录存在main.py文件,且FastAPI实例的变量名确实为app,如果你的文件名、实例名有变动,需要同步修改Procfile中main:app的对应部分
  • requirements.txt中已经正确添加fastapi、uvicorn(方案2需额外添加gunicorn)的依赖声明
  • 代码中没有硬编码服务端口,所有端口配置优先读取PORT环境变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:36:05