Python-uvicorn驱动fastapi

1- 【uvicorn】是Python 的闪电般快速的 ASGI 服务器,用于驱动异步 Web 应用(如 FastAPI)

2-【ASGI 服务器】就是异步 Python Web 的“接客门童”
把来自浏览器的 HTTP 请求转交给 Python 异步应用(FastAPI、Django 3+ 等),再把响应搬回去,全程支持高并发长连接(WebSocket、HTTP/2)。


1-知识整理

1-使用UV进行环境环境

2-使用uvicorn驱动fastapi


1-UV 环境管理

# 1-查看并指定环境
uv python list
uv python pin 3.10

# 2-进行项目创建
uv init hello-fastapi && cd hello-fastapi

# 3-指定本地运行环境
uv venv && source .venv/bin/activate

# 4-本地环境安装依赖
uv pip install uvicorn fastapi


2-使用uvicorn驱动fastapi

import multiprocessing

import uvicorn
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def home():
    return {"msg": "ok, I am fastapi"}


if __name__ == "__main__":
    # 开发时直接 python main.py 即可
    # uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)

    # 生产推荐配置:【多进程 + 日志 + 热升级】
    uvicorn.run(
        "main:app",
        host="0.0.0.0",
        port=8000,
        # 多进程
        workers=multiprocessing.cpu_count(),
        # 日志
        log_level="info",
        # 热升级
        access_log=True,
    )


3-fastapi指定title和version

import uvicorn
from fastapi import FastAPI

app = FastAPI(title="聊天历史管理API", version="1.0.0")


@app.get("/")
def home():
    return {"msg": "ok, I am fastapi"}


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


2-uvicorn使用详解

下面给出“最简单→最常用→生产级”3段式代码,直接复制即可跑。
(假设已安装:pip install uvicorn fastapi


  1. 最简单:命令行一键启动
# main.py 里写一个 FastAPI/Starlette 应用,变量名必须是 app
uvicorn main:app --reload

--reload 只在开发用,代码改动后自动重启。


  1. 最常用的 5 行代码:把启动脚本写在 Python 里
# main.py
from fastapi import FastAPI
import uvicorn

app = FastAPI()

@app.get("/")
def home():
    return {"msg": "hello uvicorn"}

if __name__ == "__main__":
    # 开发时直接 python main.py 即可
    uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)

运行:

python main.py

  1. 生产级:多进程 + 日志 + 热升级
# main.py
from fastapi import FastAPI
import uvicorn
import multiprocessing

app = FastAPI()

@app.get("/")
def home():
    return {"msg": "prod ready"}

if __name__ == "__main__":
    # 推荐 workers = CPU 核心数
    uvicorn.run(
        "main:app",
        host="0.0.0.0",
        port=8000,
        workers=multiprocessing.cpu_count(),
        log_level="info",
        access_log=True,
    )

启动:

# 正式环境去掉 --reload
python main.py

等价命令行:

uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4

常用参数速查

参数 说明
--reload 开发自动重载
--workers 多进程,生产必开
--loop 选择事件循环,如 uvloop
--log-level 日志级别:critical/error/warning/info/debug

以上 3 段代码覆盖 90% 的使用场景,按需求直接选用即可。


Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐