[WebServer/Python] uvicorn : Python 高性能 ASGI 服务器

0 序

  • Python uvicorn 的快速入门笔记文档。Uvicorn 是一个超快的 ASGI 服务器,基于 uvloophttptools 构建。

1 uvicorn : Python 高性能 ASGI 服务器

安装

# 基础安装
pip install uvicorn

# 包含标准依赖(推荐)
pip install "uvicorn[standard]"

# 使用 uv 安装
uv add uvicorn

基本用法

1. 命令行启动

# 基本启动
uvicorn main:app

# 常用参数
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

2. 最小示例 (main.py)

async def app(scope, receive, send):
    """最简 ASGI 应用"""
    assert scope['type'] == 'http'
    
    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [[b'content-type', b'text/plain']],
    })
    await send({
        'type': 'http.response.body',
        'body': b'Hello, Uvicorn!',
    })

3. 配合 FastAPI 使用(最常用)

from fastapi import FastAPI

app = FastAPI()

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

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

启动:

uvicorn main:app --reload

常用参数

参数 说明 示例
--host 绑定主机 0.0.0.0
--port 绑定端口 8000
--reload 热重载(开发用) -
--workers 工作进程数 4
--log-level 日志级别 info
--ssl-keyfile SSL 密钥 key.pem
--ssl-certfile SSL 证书 cert.pem

生产环境配置

# 生产环境(多进程,无热重载)
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4

# 或使用 gunicorn + uvicorn
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker

程序化运行

import uvicorn

if __name__ == "__main__":
    uvicorn.run(
        "main:app",
        host="0.0.0.0",
        port=8000,
        reload=True,
        log_level="info"
    )

性能对比

服务器 性能 特点
Uvicorn ⭐⭐⭐⭐⭐ 最快,纯 ASGI
Gunicorn ⭐⭐⭐⭐ 稳定,WSGI
Daphne ⭐⭐⭐ Django Channels 默认

快速检查清单

Y 推荐文献

X 参考文献

posted @ 2026-04-10 00:52  千千寰宇  阅读(37)  评论(0)    收藏  举报