字数 697,阅读大约需 4 分钟
推荐高性能Python的Web框架FastApi之介绍框架
^FastApi是我们团队在公司内部基建使用较多的框架,原因在于:在Python里,性能快、学习容易、支持异步并发、且Python可以容易对接机器学习和大模型^,帮助业务快速实现早期产品原型并上线服务
。当前,后期对更高性能的要求,我们也有Golang语言进行服务升级改造。
重点:“Fast”指的是开发团队创建原型 API 服务器和扩展已投入生产的 API 服务器的速度
。
FastAPI 是一种现代,快速(高性能)的 Web 框架,基于标准Python 类型提示使用 Python 3.6+ 构建 API;FastAPI 基于 Starlette 和 Pydantic,性能非常出色,它原生支持异步编程,能够高效处理并发请求。
文档: https://fastapi.tiangolo.com
源码: https://github.com/fastapi/fastapi
学习:https://fastapi.tiangolo.com/zh/learn/
显著优点
1. 快速:最快的 Python web 框架之一。
2. 高效编码:提高功能开发速度约 200% 至 300%。
3. 更少 bug:减少约 40% 的人为(开发者)导致错误。
4. 智能:极佳的编辑器支持,推荐vscode。处处皆可自动补全,减少调试时间。
5. 简单:设计的易于使用和学习,阅读文档的时间更短。
6. 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
7. 健壮:生产可用级别的代码。还有自动生成的交互式文档。
8. 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
性能测试
站在巨人肩上
starletter
Starlette 是一个轻量级的 Python ASGI(异步服务器网关接口)框架,专门为构建异步 Web 应用而设计。
主要特点:
• 异步优先:原生支持 async/await,专为异步编程设计
• 轻量快速:最小化的核心,性能出色
• ASGI 标准:基于现代的 ASGI 协议,支持 WebSocket、HTTP/2 等
from starlette.applications import Starlette
from starlette.responses import JSONResponse
app = Starlette()
@app.route('/')
async def homepage(request):
return JSONResponse({'message': 'Hello World'})
Pydantic
Pydantic 是一个 Python 数据验证库,使用类型提示来验证数据。
主要功能:
• 数据验证:自动验证输入数据的类型和格式
• 数据序列化:将 Python 对象转换为字典或 JSON
• 数据解析:将字典或 JSON 转换为 Python 对象
• 类型安全:基于 Python 类型提示系统
from pydantic import BaseModel
from typing import Optional
class User(BaseModel):
id: int
name: str
email: str
age: Optional[int] = None
# 自动验证
user_data = {
"id": "123", # 字符串会自动转换为整数
"name": "Alice",
"email": "[email protected]"
}
user = User(**user_data) # 创建验证过的对象
print(user.dict()) # 转换为字典
print(user.json()) # 转换为 JSON
评论区