[WebServer/Python] uvicorn : Python 高性能 ASGI 服务器
0 序
- Python uvicorn 的快速入门笔记文档。Uvicorn 是一个超快的
ASGI服务器,基于uvloop和httptools构建。
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 参考文献
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号