Uvicorn或者uv是什么?

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

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


核心特点

  • 高性能 :基于 uvloophttptools,支持高并发和长连接(如 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 是必不可少的工具。

相关推荐
PatrickYao04223 小时前
Linux安装UV
linux·运维·uv
2601_962284502 天前
uv:终结 Python 虚拟环境管理乱局
python·项目管理·uv·虚拟环境·依赖管理
一直走下去-明4 天前
在 Windows 上安装 uv
windows·uv
<花开花落>5 天前
Python 项目迁移到 uv:经验小结与可复用工作流
python·uv
Hello Mr.Z5 天前
microduck_rl(MuJoCo+PPO+WandB+UV训练机器人)
机器人·uv·rl·ppo·microduck
点心的游戏开发世界9 天前
UnityShaderGraph滚动UV笔记
笔记·uv
长江后浪博客11 天前
陶瓷盘UV喷墨印刷中的Z轴高度测量与防碰撞技术方案
数码相机·uv·陶瓷盘uv打印·uv喷墨印刷·z轴测高·喷头防碰撞·激光位移传感器
大衛說14 天前
02 · 环境搭建:uv 包管理与现代 IDE
ide·uv
咋吃都不胖lyh18 天前
使用 uv 根据 requirements.txt 创建并应用虚拟环境
uv