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

FastAPI部署Heroku遇Error R10启动超时问题求助

解决FastAPI部署Heroku时的R10超时错误

错误原因

Heroku会为每个Web进程动态分配端口,并通过环境变量$PORT暴露这个端口。你的当前配置里,uvicorn默认绑定8000端口,没有使用Heroku提供的端口,导致服务无法被Heroku的路由系统访问,最终触发Error R10 (Boot timeout)。

解决方案

方法1:修改Procfile(推荐,无需改动代码)

直接在Procfile的uvicorn命令中指定绑定$PORT和监听所有网络接口:

web: uvicorn main:app --workers 4 --host 0.0.0.0 --port $PORT
  • --host 0.0.0.0:让服务监听所有可用的网络接口,确保Heroku能访问到你的服务(如果只绑定127.0.0.1,只能本地访问)
  • --port $PORT:读取Heroku提供的环境变量端口,替代默认的8000

方法2:在代码中读取端口(适合本地调试与部署逻辑统一的场景)

修改FastAPI代码,导入os模块读取环境变量端口:

import os
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder

app = FastAPI()

@app.get('/')
async def root():
    return jsonable_encoder({'message': 'hello world'})

if __name__ == "__main__":
    import uvicorn
    # 本地运行默认用8000端口,部署到Heroku自动读取$PORT
    port = int(os.getenv("PORT", 8000))
    uvicorn.run(app, host="0.0.0.0", port=port)

对应的Procfile可改为:

web: python main.py

验证修改

重新提交代码到Heroku,部署完成后访问应用域名,即可正常返回{"message": "hello world"}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:43:12