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

FastAPI/Uvicorn微服务启动:配置文件端口未生效问题排查

问题分析与解决方案

核心错误原因

  1. 启动方式未触发配置逻辑
    当你执行 uvicorn main:app 时,Uvicorn 直接作为入口加载你的 FastAPI 应用,不会执行 if __name__ == "__main__" 代码块,因此你读取 config.ini 的逻辑完全没被运行,Uvicorn 默认使用 8000 端口。

  2. 代码本身存在语法/逻辑错误
    就算你改用 python main.py 启动,当前代码也无法正常工作:

  • 未创建 FastAPI 实例(app = FastAPI() 缺失)
  • asyn 拼写错误,应为 async
  • 返回值 value 未定义
  • 从配置读取的 APP_PORT 是字符串类型,Uvicorn 的 port 参数要求整数
  • 变量名对应错误(APP_NAME 绑定了 version,APP_VER 绑定了 appName)

修正后的代码

from fastapi import FastAPI 
import configparser
import uvicorn  # 需导入uvicorn模块

# -------------- 配置读取 --------------------
config = configparser.ConfigParser()
config.read('configuration/config.ini')

# 修正变量名对应关系
APP_NAME = config['application']['appName']
APP_VER = config['application']['version']
APP_DESC = config['application']['description']
APP_PORT = int(config['application']['port'])  # 转换为整数类型
# -------------------------------------------

# 创建FastAPI实例,可将配置信息传入文档
app = FastAPI(title=APP_NAME, version=APP_VER, description=APP_DESC)

@app.get("/someroute")
async def some_func(i: str):  # 修正async拼写
    return {"input": i}  # 定义合法返回值

if __name__ == "__main__":
    uvicorn.run("main:app", host="127.0.0.1", port=APP_PORT, log_level="debug")

正确启动方式

运行 python main.py,此时会执行 if __name__ == "__main__" 代码块,加载配置文件中的 8001 端口启动服务。

如果坚持要用 uvicorn main:app 命令启动,需手动指定端口(但会失去配置文件统一管理的意义):

uvicorn main:app --port 8001

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:01:02