Uvicorn或者uv是什么?

Uvicorn 是一个用于 Python 的 ASGI(异步服务器网关接口)Web 服务器,专门用来运行异步 Web 应用程序,比如用 FastAPI、Starlette 等框架写的项目。

简单来说,它的作用是 "桥梁":Python 异步框架本身不能直接监听网络请求,Uvicorn 负责接收 HTTP 请求、解析协议、转发给框架处理,再把响应返回给客户端。


核心特点

  • 高性能 :基于 uvloop 和 httptools,支持高并发和长连接(如 WebSocket)。
  • 开发友好 :支持代码热重载(--reload)、彩色日志、环境变量配置。
  • 协议支持:HTTP/1.1 和 WebSocket。
  • 轻量级 :单进程异步模型,也可通过 --workers 启动多进程。

典型使用场景

  • FastAPI 官方推荐服务器:FastAPI 是异步框架,Uvicorn 是其默认运行时。
  • 开发环境 :用 uvicorn main:app --reload 启动,修改代码自动重启。
  • 生产部署:常与 Gunicorn 结合(Gunicorn 管理进程,Uvicorn 处理异步请求)。

安装方式

bash 复制代码
# 基础安装(仅核心功能)
pip install uvicorn

# 完整安装(推荐,包含 uvloop、httptools、websockets 等)
pip install "uvicorn[standard]"

注意:完整安装能提升性能并支持 WebSocket 和热重载。


快速启动示例

假设有一个 FastAPI 应用 main.py:

python 复制代码
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

启动命令:

bash 复制代码
uvicorn main:app --reload --host 0.0.0.0 --port 8000
  • main:app:模块名和应用实例名。
  • --reload:开发模式自动重载。
  • --host/--port:指定监听地址和端口。

与 Gunicorn 的区别

特性 Uvicorn (ASGI) Gunicorn (WSGI)
协议 异步(支持 FastAPI、Starlette) 同步(支持 Flask、Django)
并发模型 单进程异步事件循环 多进程(预分叉)
适用场景 高并发、I/O 密集型、长连接(WebSocket) CPU 密集型、传统同步应用
生产部署 常与 Gunicorn 结合(Gunicorn 管理进程) 独立使用或搭配 Nginx

常见用途总结

  1. 开发 FastAPI/Starlette 项目:本地调试、热重载。
  2. 部署异步 Web 服务:直接运行或搭配 Gunicorn。
  3. 支持 WebSocket 实时通信:如聊天室、实时数据推送。
  4. 云函数/Serverless 部署:适配 AWS Lambda、Google Cloud Functions 等。

如果你正在学习 FastAPI 或异步 Web 开发,Uvicorn 是必不可少的工具。

相关推荐
IT规划师5 天前
Redis 数据类型全解 - HyperLogLog:12 KB 估出亿级 UV(八)
redis·uv·hyperloglog·.net10
Martina_03219 天前
AI生成3D模型一合并网格,材质就串色?用6步检查材质槽、UV与图集重映射
图像处理·人工智能·3d·材质·uv·游戏策划·1024程序员节
我不会起名字32210 天前
Redis 从 0 到 1(十六):1 亿 UV 只占 12KB?计数去重三件套的 Go 实测
redis·go·uv·布隆过滤器·hyperloglog
2601_9611462013 天前
实验室等离子表面处理设备安全整改记录:通风、UV、接地三项
笔记·安全·uv
毒爪的小新13 天前
最新 Dify 1.14.0+ 内网离线插件打包、部署完整踩坑方案(解决 uv.lock 依赖校验失败)
运维·ai·uv·dify
醇氧14 天前
CentOS7 使用 uv 安装 Python3.11.9 生产部署文档
uv·python3.11
工业涂料百问21 天前
水性、粉末、UV、溶剂型怎么选?一张对照表看清四条涂层路线的边界
uv
AI 编程助手GPT22 天前
GPT 脚本别只发一个文件:用 uv 把依赖和锁一起交付
人工智能·python·gpt·uv·依赖管理
Martina_032122 天前
AI生成3D模型UV岛太碎,重绘贴图全是接缝?用6步重整UV并保留原材质
图像处理·人工智能·3d·自然语言处理·贴图·uv·游戏策划