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 是必不可少的工具。

相关推荐
玖石书4 天前
python-uv-windows环境安装方案
windows·python·uv
数据杂坛5 天前
【Python程序开发系列】一文搞清楚Gunicorn以及和Nginx的区别
python·nginx·gunicorn
常山云栈5 天前
Anaconda和uv的区别是什么?
python·anaconda·uv
H Journey12 天前
pip 和uv 开发和部署python项目
python·pip·uv
梦想不只是梦与想13 天前
环境管理:Conda 与 venv
python·conda·uv
打工仔折腾 AI14 天前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn
乐迪绘防伪油墨技术分享15 天前
特种功能油墨选型指南:温变 / 遇水 / 荧光 / UV LED 技术对比与供应商参考
前端·html·uv
Maiko Star19 天前
Python 包与项目管理工具——uv
python·uv
StarDream-Online19 天前
Windows 下 uv 安装与配置完全指南(含环境变量设置)
windows·uv