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

部署FastAPI应用至Heroku遇R10启动超时问题求助

问题根源与解决方案

你的R10启动超时错误核心原因是没有绑定到Heroku动态分配的$PORT端口。从日志可见,你的Uvicorn进程一直绑定在固定的8000端口,而Heroku要求Web进程必须绑定到它提供的环境变量$PORT指定的端口,否则会判定进程未启动完成,触发超时终止。

步骤1:修正Procfile

修改你的Procfile,添加--port $PORT参数绑定到正确端口,同时保留--host 0.0.0.0,并且建议先将worker数量调整为1(Heroku免费dyno资源有限,多worker可能导致启动缓慢):

web: uvicorn main:app --host 0.0.0.0 --port $PORT --workers 1

步骤2:验证端口绑定逻辑

如果你的FastAPI代码里有硬编码端口的逻辑(比如直接在代码里调用uvicorn.run指定端口),需要改成读取环境变量:

import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

# 读取Heroku的PORT环境变量,本地开发默认用8000
port = int(os.getenv("PORT", 8000))

origins = [
    "http://localhost:3000",  # 修正拼写错误:原配置少了一个冒号
    "https://desolate-springs-06739-298cdafdc988.herokuapp.com"
]

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# 本地启动时的逻辑
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=port)

额外注意点

  • 你CORS配置里的第一个originhttp//:localhost:3000存在拼写错误,少了一个冒号,会导致本地前端请求时出现CORS错误,建议一并修正。
  • 免费dyno的CPU和内存资源有限,使用多个worker可能会导致启动延迟或运行卡顿,先从1个worker开始验证,稳定后再根据需求调整。

内容的提问来源于stack exchange,提问作者Juan Esteban Ladron De Guevara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:14:50