Python-uvicorn驱动fastapi
·
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)
- 最简单:命令行一键启动
# main.py 里写一个 FastAPI/Starlette 应用,变量名必须是 app
uvicorn main:app --reload
--reload 只在开发用,代码改动后自动重启。
- 最常用的 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
- 生产级:多进程 + 日志 + 热升级
# 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% 的使用场景,按需求直接选用即可。
更多推荐
所有评论(0)