FastAPI教程-uvicorn启动FastAPI服务(开发环境)

方式1-命令启动

生成环境、开发环境都适合

格式

uvicorn 文件名:app实例

代码

创建 main.py 文件,内容如下:

from fastapi import FastAPI
app = FastAPI()
# 根路由
@app.get("/")
async def root():
    return {"message": "Hello FastAPI"}

启动命令

访问服务:http://localhost:8000

uvicorn main:app --reload
参数说明
  • main:文件名称 main.py
  • app:代码里 app = FastAPI() 的变量名

启动命令-指定ip、port

绑定所有网卡的8000端口

uvicorn main:app --reload --host 0.0.0.0 --port 8000

常用参数

uvicorn main:app \
--host 0.0.0.0 \
--port 8000 \
--reload \
--log-level debug \
--access-log
参数解释
参数 含义
--host 0.0.0.0 监听所有网卡,局域网其他设备可以访问;默认 127.0.0.1 只能本机
--port 8000 指定服务端口,默认端口号 8000
--reload 代码变更自动重启,仅开发使用,生产必须删除
--log-level debug 日志级别,默认是 info:critical > error > warning > info > debug
--access-log 开启访问日志(打印每条http请求),默认开启;--no-access-log 关闭

方式2-代码启动

本地简单调试、一键启动 Demo、小型脚本测试,仅限开发

不适合生成环境

  • 无法配合 gunicorn 多进程部署;
  • 信号处理、进程管理不友好,容器、systemd 托管时容易出现无法正常优雅关闭;
  • 无法直接使用 uvicorn 官方命令行全部参数;
  • 导入顺序陷阱:直接传入 app 对象时,搭配 —reload 容易出现重复加载问题;
  • 主流运维规范、容器镜像最佳实践都不推荐。

代码

创建 main.py 文件,内容如下:

from fastapi import FastAPI
import uvicorn

app = FastAPI()
# 根路由
@app.get("/")
async def root():
    return {"message": "Hello FastAPI"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

原文出处:/show_1GW3mtUxctEN.html