uvicorn/fastapi/flash/asyncio区别

AI-摘要
User GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
uvicorn/fastapi/flash/asyncio区别
gogongxtuvicorn/fastapi/flash/asyncio区别
| 项目 | 类型 | 作用 | 与 asyncio 的关系 |
|---|---|---|---|
| asyncio | Python标准库 | 提供异步编程基础 | 基础异步运行时 |
| Uvicorn | ASGI服务器 | 运行异步Web应用 | 基于 asyncio 构建 |
| FastAPI | Web框架 | 构建Web API | 内部使用 asyncio 处理异步请求 |
| Flask | Web框架 | 构建Web应用 | 传统同步,可搭配异步但非原生 |
关键区别:
asyncio 是底层异步引擎
Uvicorn 是利用 asyncio 的服务器
FastAPI 是基于 asyncio 的异步框架
Flask 是同步框架,需要额外适配才能用 asyncio
关系层级
关系层级:
1
客户端请求 → Uvicorn(服务器) → FastAPI/Flask(Web框架) → 你的代码Flask:同步WSGI框架,通常使用 Gunicorn + Werkzeug 作为服务器
FastAPI:异步ASGI框架,通常使用 Uvicorn 作为服务器
Uvicorn 是 服务器,负责处理网络连接、协议解析等底层工作
FastAPI/Flask 是 Web框架,负责路由、请求处理、响应生成等应用逻辑
Uvicorn使用
Uvicorn 是一个ASGI(Asynchronous Server Gateway
Interface)服务器,专门用于运行异步Python
Web应用。它基于uvloop和httptools构建,性能非常高。
主要特点:
支持 HTTP/1.1 和 WebSockets
支持 ASGI 应用
高性能,基于异步I/O
常用于部署 FastAPI、Starlette 等异步框架
简单的 FastAPI + Uvicorn 使用例子
安装依赖: pip install fastapi uvicorn
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from fastapi import FastAPI
import asyncio
from datetime import datetime
# 创建 FastAPI 应用实例
app = FastAPI(title="示例API")
# 同步路由(传统方式)
@app.get("/")
def read_root():
return {"message": "Hello World", "timestamp": datetime.now().isoformat()}
# 异步路由(推荐在 FastAPI 中使用)
@app.get("/async")
async def read_async():
# 模拟异步操作,如数据库查询、API调用等
await asyncio.sleep(1) # 非阻塞等待
return {
"message": "Async Hello World",
"timestamp": datetime.now().isoformat()
}
# 带路径参数的路由
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {
"item_id": item_id,
"query_param": q,
"is_even": item_id % 2 == 0
}
# 启动参数配置
if __name__ == "__main__":
import uvicorn
# 使用 uvicorn 直接运行
# 参数说明:
# - app: FastAPI 应用实例
# - host: 监听地址
# - port: 监听端口
# - reload: 开发时自动重载
uvicorn.run(
app="main:app", # 模块名:应用实例名
host="0.0.0.0",
port=8000,
reload=True, # 仅开发环境使用
log_level="info"
)启动方式1: 直接运行 Python 文件
python main.py
启动方式2: 使用 Uvicorn 命令行
1
2
3
4
5
6
7
8
# 基本运行
uvicorn main:app --host 0.0.0.0 --port 8000
# 带热重载(开发环境)
uvicorn main:app --reload
# 增加并发工作进程(生产环境)
uvicorn main:app --workers 4启动后,可以访问:
自动文档:
Swagger UI: http://localhost:8000/docs
ReDoc: http://localhost:8000/redoc
生产环境部署
对于生产环境,建议:
1
2
3
4
5
6
# 使用多个 worker 进程
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
# 或者使用 Gunicorn 作为进程管理器(搭配 Uvicorn worker)
pip install gunicorn
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 评论
匿名评论隐私政策





