之前看过一篇报告(文章),一句话结论就是:FastAPI几乎已经是Python生态下的第一流Web框架,参考FastAPI简介。
最佳实践
实际上指代开源(GitHub,16.8K Star,1.2K Fork)仓库,用Markdown形式记录的最佳实践文档。居然能收到近17K星星,值得一看。
| 痛点 | 结果 | 推荐做法 |
|---|---|---|
| 路由、模型混乱 | 难维护 | 按领域划分包,src/router.py等 |
| 异步阻塞 | 整个应用卡住 | async做非阻塞I/O,sync放线程池或外部进程 |
| Pydantic重复创建 | 性能浪费 | 自定义BaseModel、控制序列化 |
| 依赖散落 | 重复校验 | 小颗粒依赖、链式复用(依赖缓存) |
| 迁移不可逆 | 危险 | 明确命名、静态迁移脚本 |
实战小贴士
- 路径参数命名靠一致性:能复用依赖就别换名字;
- CPU密集任务别用
async或线程池,丢给worker(进程)去做; - docs默认隐藏,只有
dev/staging可见; - 把复杂聚合留给DB(SQL-first),Pydantic只做验证/序列化;
- 测试从一开始就用异步TestClient。
FastAPI-MCP
官网,开源(GitHub,11.7K Star,924 Fork)项目,零配置自动将FastAPI端点公开MCP工具,极大简化API的接入和管理。
优势
- 零配置开箱即用:通过几行代码即可将现有FastAPI路由暴露为标准MCP工具,极大缩短开发周期;
- 灵活路由隔离:支持多组MCP工具挂载在不同路径,便于按业务线、角色或权限隔离管理,满足多样化需求;
- 自动化文档与Schema支持:结合Pydantic能力,可自动生成响应/入参描述,提升工具的可发现性和可维护性;
- 易于扩展与集成:适用于内部辅助、知识库问答、流程自动化等一系列智能应用场景,助力快速将传统后端服务能力赋能LLM智能生态;
- 高效协同:多人团队协作时,前端/智能体/业务方无需关心底层接口细节,无缝实现智能助手对后端服务的能力调用。
安装:pip install uvicorn fastapi-mcp
示例:
fromfastapiimportFastAPIfromfastapi_mcpimportFastApiMCPimportuvicorn app=FastAPI()@app.get("/text",operation_id="text")asyncdefhello():return"Hello"mcp=FastApiMCP(app,name="测试MCP",description="测试",)mcp.mount(mount_path='/test-mcp')if__name__=='__main__':uvicorn.run(app,host="0.0.0.0",port=8000)通过路由区分多个MCP工具:FastAPI-MCP支持一个FastAPI应用公开多个MCP接口,每个接口根据不同业务场景和权限独立管理。
TurboAPI
官网,基于Zig重构的开源(GitHub,1.1K Star,29 Fork)Python Web框架,100%兼容FastAPI,实现7-20倍的性能跃升,一行代码迁移。不用放弃Python生态,不用重写业务代码,就能拥有接近原生的HTTP性能。
在AppleM3Pro、Python 3.14t自由线程、wrk4线程/100连接的测试环境下,TurboAPI官方发布的和FastAPI、Starlette、Flask的对比测评数据
| 框架 | 每秒请求数 | 平均延迟 | 冷启动 | 内存占用 |
|---|---|---|---|---|
| TurboAPI | 47,832 | 0.15ms | 5ms | 12MB |
| FastAPI | 6,847 | 14.6ms | 800ms | 72MB |
| Starlette | 9,201 | - | - | - |
| Flask | 4,312 | - | - | - |
总结
- 吞吐量提升7倍:47832 req/s对比FastAPI的6847 req/s,并发处理能力大幅飙升
- 延迟降低97倍:0.15ms的平均延迟,让接口响应快到无感
- 冷启动快160倍:5ms的冷启动速度,秒杀FastAPI的800ms,服务部署更高效
- 内存节省83%:仅12MB的内存占用,相比FastAPI的72MB,服务器资源利用率拉满
在无参数GET请求这类特定场景下,TurboAPI的性能提升甚至能达到16-18倍。
TurboAPI的核心设计思路无比清晰:让Python只专注于它最擅长的业务逻辑开发,把HTTP服务、数据验证、网络IO等性能敏感的工作,全部交给天生擅长高性能、低开销的Zig语言处理。四大核心设计,造就了极致性能:
Zig原生HTTP核心,打造高性能底座。整个HTTP服务器基于Zig0.15实现,从底层保障性能:
- 24线程池+keep-alive连接管理,高效处理并发请求
- 基于radixtrie的高性能路由,路由匹配速度极快
- 零拷贝响应管道,数据传输无额外内存开销
- 静态路由预渲染,启动时完成处理,请求阶段零耗时
智能路由分类,按需分发更高效。启动时自动分析每个路由,为其匹配最轻量的分发路径,避免无意义的资源消耗:
- 无参数GET请求:走「零开销」专属路径,直接返回结果
- 带模型验证的POST请求:由Zig侧完成JSON验证,无效请求直接返回422,完全不占用Python资源
零拷贝响应,数据传输效率拉满。Zig直接获取Python字符串的内部缓冲区指针,通过write()直接写入socket,全程无内存拷贝、无临时缓冲区、无堆分配,彻底消除数据传输的性能损耗。
Zig原生CORS,干掉性能损耗重灾区。CORS头部在启动时一次性预渲染,通过memcpy注入请求响应,实现0%性能开销。要知道,原本Python的CORS中间件,会占用高达24%的服务性能!
完全兼容FastAPI语法,不重构业务代码,仅需改动两行import语句,就能完成从FastAPI到TurboAPI的迁移。
原FastAPI代码
fromfastapiimportFastAPI,Depends,HTTPExceptionfrompydanticimportBaseModel app=FastAPI()classItem(BaseModel):name:strprice:floatquantity:int=1@app.get("/items/{item_id}")defget_item(item_id:int):return{"item_id":item_id,"name":"Widget"}改造为TurboAPI代码
fromturboapiimportTurboAPIasFastAPI,Depends,HTTPExceptionfromdhiimportBaseModel# 替代pydantic# 省略还支持FastAPI的所有核心用法,路由装饰器、依赖注入、OAuth2认证、异步处理器等功能一应俱全,仅少数功能(WebSocket、HTTP/2+TLS)处于开发中,完全满足生产环境的核心需求。
TurboAPI并非只靠性能取胜,275+测试用例通过,目前处于Alpha状态,已可直接用于生产(配合nginx/Caddy处理HTTPS即可)。
| 功能 | 状态 | 功能 | 状态 |
|---|---|---|---|
| 路由装饰器 | ✅ | 路径参数类型转换 | ✅ |
| 查询参数 | ✅ | JSON请求体 | ✅ |
| 异步处理器 | ✅ | 依赖注入 | ✅ |
| OAuth2认证 | ✅ | HTTPBearer/Basic | ✅ |
| APIKey认证 | ✅ | CORS中间件 | ✅ |
| GZip中间件 | ✅ | HTTPException | ✅ |
| 后台任务 | ✅ | APIRouter路由前缀 | ✅ |
| OpenTelemetry | ✅ | Prometheus指标 | ✅ |
| 原生FFI处理器 | ✅ | WebSocket | 开发中 |
| HTTP/2+TLS | 开发中 | CloudflareWASM | 开发中 |
完美支持OpenTelemetry可观测性集成和Prometheus指标监控,让生产环境的服务运维、问题排查更轻松,满足企业级开发的需求。
使用TurboAPI,可继续享受Python生态的所有便利:
- 无缝使用PyTorch、transformers、LangChain等AI/ML核心库
- 兼容SQLAlchemy、Alembic等主流ORM工具
- 对接StripeSDK、boto3、Celery等成熟第三方库
- 团队无需学习新语言,复用已有Python技能栈
| 场景 | 推荐方案 | 核心原因 |
|---|---|---|
| 纯JSON代理,无复杂业务逻辑 | Go(net/http) | 极致性能,简单场景适配性强 |
| 嵌入式系统,<1MB二进制需求 | Rust | 极致轻量,资源受限环境首选 |
| 重度依赖Python ML/AI库 | TurboAPI | 保留Python生态,无需重写代码 |
| 现有FastAPI项目需要性能优化 | TurboAPI | 一行代码迁移,成本极低 |
| 后台任务+AI推理+HTTP服务融合 | TurboAPI | Python生态优势无可替代 |
| 需成熟的HTTP/2、gRPC支持 | Go | 生态成熟,周边工具完善 |
| 超高性能需求(>200kreq/s) | 原生Go/Rust | 满足极致性能场景需求 |
采用Python+Zig分层架构,职责划分明确,便于维护和扩展:
turboAPI/ ├──python/turboapi/#Python层:兼容FastAPI,处理业务逻辑 │├──main_app.py#TurboAPI主类 │├──security.py#认证相关功能 │└──turbonet.*.so#编译的Zig扩展 ├──zig/#Zig层:性能核心,处理HTTP服务等底层工作 │├──src/ ││├──server.zig#HTTP服务器、线程池 ││├──router.zig#radixtrie路由 ││└──dhi_validator.zig#JSON验证 │└──build.zig#Zig构建系统 ├──tests/#275+测试用例,保障稳定性 ├──benchmarks/#性能测试脚本 └──Dockerfile#一键构建配置目前TurboAPI已完成核心功能开发,后续将重点完善以下能力:
- 完成WebSocket、HTTP/2+TLS支持
- 适配CloudflareWorkersWASM目标
- 基于zag实现纤程并发,进一步提升并发性能
Python开发者友好:
- 更低的服务器成本:更少的机器就能支撑更高的并发
- 更好的用户体验:极致的低延迟,让接口响应快到无感
- 更低的迁移成本:一行代码,让现有FastAPI项目性能狂飙
- 更强的业务支撑:AI/ML业务与Web服务无缝融合,无需跨语言开发
实战
支持Docker一键部署和本地安装两种方式
gitclone https://github.com/justrach/turboAPI.gitcdturboAPIdockercompose up-d基于uv:
# 安装自由线程Python 3.14tuv pythoninstall3.14t# 安装turboapipipinstallturboapi# 编写测试代码并运行python3.14t app.py极简测试示例
fromturboapiimportTurboAPI app=TurboAPI()@app.get("/")defhello():return{"message":"Hello TurboAPI!"}if__name__=="__main__":app.run()浏览器打开http://127.0.0.1:8000。
FastApiAdmin
开源(GitHub,523 Star,151 Fork)高度模块化、先进的现代化快速开发平台,旨在帮助开发者高效搭建高质量的企业级中后台系统。采用前后端分离架构,融合FastAPI和Vue3实现多端统一开发,提供一站式开箱即用的开发体验。代码同步托管于Gitee,560 Star,269 Fork。
演示环境
- 网页端:https://service.fastapiadmin.com/web
- 移动端:https://service.fastapiadmin.com/app
- 登录账号:admin,密码:123456
| 优势 | 描述 |
|---|---|
| 现代化技术栈 | 基于FastAPI+Vue3+TypeScript等前沿技术构建 |
| 高性能异步 | 利用FastAPI异步特性和Redis缓存优化响应速度 |
| 安全可靠 | JWT+OAuth2认证机制,RBAC权限控制模型 |
| 模块化设计 | 高度解耦的系统架构,便于扩展和维护 |
| 全栈支持 | Web端+移动端(H5)+后端一体化解决方案 |
| 快速部署 | Docker一键部署,支持生产环境快速上线 |
| 完善文档 | 详细的开发文档和教程,降低学习成本 |
| 智能体框架 | 基于Langchain和Langgraph的开发智能体 |
技术栈
| 类型 | 技术选型 | 描述 |
|---|---|---|
| 后端框架 | FastAPI、Uvicorn、Pydantic2.0、Alembic | 现代、高性能的异步框架,强制类型约束,数据迁移 |
| ORM | SQLAlchemy2.0 | 强大的ORM库 |
| 定时任务 | AP Scheduler | 轻松实现定时任务 |
| 权限认证 | PyJWT | 实现JWT认证 |
| 前端框架 | Vue3/Vite5/Pinia/TypeScript | 快速开发Vue3应用 |
| WebUI | Element Plus | 企业级UI组件库 |
| 移动端 | UniApp、WotDesign Uni | 跨端移动应用框架 |
| 数据库 | MySQL、PG、Sqlite | 关系型和文档型数据库支持 |
| 缓存 | Redis | 高性能缓存数据库 |
| 文档 | Swagger/Redoc | 自动生成API文档 |
| 部署 | Docker/Nginx/Docker Compose | 容器化部署方案 |
| 智能体框架 | Langchain/Langgraph | 基于Langchain和Langgraph的智能体框架 |
插件化架构特性
- 自动路由发现:系统会自动扫描
backend/app/plugin/目录下所有controller.py文件 - 自动路由注册:所有路由会被自动注册到对应的前缀路径
- 模块化管理:按功能模块组织代码,便于维护和扩展
- 支持多层级嵌套:支持模块内部多层级嵌套结构
自动路由注册机制
- 控制器文件必须命名为
controller.py - 路由会自动映射:
module_xxx->/xxx - 支持多个API Router实例
- 自动处理路由去重
功能模块
| 模块 | 功能 | 描述 |
|---|---|---|
| 仪表盘 | 工作台、分析页 | 系统概览和数据分析 |
| 系统管理 | 用户、角色、菜单、部门、岗位、字典、配置、公告 | 核心系统管理功能 |
| 监控管理 | 在线用户、服务器监控、缓存监控 | 系统运行状态监控 |
| 任务管理 | 定时任务 | 异步任务调度管理 |
| 日志管理 | 操作日志 | 用户行为审计 |
| 开发工具 | 代码生成、表单构建、接口文档 | 提升开发效率的工具 |
| 文件管理 | 文件存储 | 统一文件管理 |
| 智能助手 | 类GPT聊天 | RAG检索 |
开发工具
- 代码生成器:自动生成前后端CRUD代码
- API文档:自动生成Swagger/Redoc API文档
- 数据库迁移:支持Alembic数据库迁移
- 日志系统:内置日志记录和查询功能
- 监控系统:内置服务器监控和缓存监控功能
开发流程
- 需求分析:明确功能需求和业务逻辑
- 数据库设计:设计数据库表结构
- 代码生成:使用代码生成器生成基础代码
- 业务逻辑开发:完善业务逻辑和接口
- 前端开发:开发前端页面和交互
- 测试:进行单元测试和集成测试
- 部署:部署到生产环境
注意事项
- 权限控制:所有API接口必须添加权限控制
- 数据验证:所有输入数据必须进行验证
- 异常处理:统一处理API异常
- 日志记录:关键操作必须记录日志
- 性能优化:注意API性能优化,避免慢查询
- 代码规范:遵循PEP8和项目代码规范
项目内置代码生成器,可根据数据库表结构自动生成前后端代码,大幅提升开发效率。生成步骤
- 登录系统:使用管理员账号登录系统
- 进入代码生成模块:在左侧菜单中点击"代码生成"
- 导入表结构:选择要生成代码的数据库表
- 配置生成参数:填写模块名称、功能名称等
- 生成代码:点击"生成代码"按钮
- 下载或写入:选择下载代码包或直接写入项目目录
实战
基于源码部署:
gitclone https://github.com/fastapiadmin/FastapiAdmin.gitcdbackend uvadd-rrequirements.txt uv run main.py run uv run main.py run--env=dev or--env=prodcdfrontendpnpminstallpnpmrun devpnpmrun build# Docker部署./deploy.sh or ./deploy.sh--start./deploy.sh--stop./deploy.sh--logs以下图片来自官方GitHub仓库,非常适合企业级平台,支持二次开发。
项目采用插件化架构设计,二次开发建议在backend/app/plugin目录下进行,系统会自动发现并注册所有符合规范的路由,便于模块管理和升级维护。
二次开发步骤
- 创建插件模块:在
backend/app/plugin/目录下创建新的模块目录 - 编写数据模型:在
model.py中定义数据库模型 - 编写数据验证:在
schema.py中定义数据验证模型 - 编写数据访问层:在
crud.py中编写数据库操作逻辑 - 编写业务逻辑层:在
service.py中编写业务逻辑 - 编写控制器:在
controller.py中定义路由和处理函数 - 自动注册:系统会自动扫描并注册所有路由,无需手动配置
开发规范
- 命名规范:模块名必须采用
module_xxx格式,控制器名采用驼峰命名法 - 权限控制:所有API接口必须添加权限控制装饰器
- 日志记录:使用OperationLogRoute类自动记录操作日志
- 返回格式:统一使用SuccessResponse或ErrorResponse返回响应
- 代码注释:为所有API接口添加详细的文档字符串
注意事项
- 控制器文件必须命名为
controller.py - 路由会自动映射到对应的前缀路径
- 无需手动注册路由,系统会自动发现并注册
前端部分
- 配置前端API:在
frontend/src/api/目录下创建对应的API文件 - 编写页面组件:在
frontend/src/views/目录下创建页面组件 - 注册路由:在
frontend/src/router/index.ts中注册路由
Aegis Stack
高度模块化、生产就绪的基于FastAPI的开源(GitHub,96 Star,6 Fork)开发平台,目标:使开发者只需花15分钟从创意跨越到可扩展的后端原型。官方文档。
亮点
- 模块化:进化式架构,一行代码增加插件,支持一键移除,Git冲突风险低
- 内置Overseer:无需配置Datadog或New Relic等昂贵的第三方工具,即可实时查看Worker队列状态、数据库健康度、定时任务进度以及AI消耗情况
- CLI:不是简单的脚手架生成器,而是系统运行时的接口。你可以直接在终端查询任务队列积压、管理服务配置
- AI-Native:内置PydanticAI、LangChain等服务组件,开箱即用;通过对话即可理解你的代码逻辑或查看实时遥测数据。
优势
- 工程化上限极高:预置Python 3.11+、Docker、Pydantic V2等主流技术栈,逻辑闭环
- 迁移成本极低:不发明复杂的私有抽象,只是把已有的成熟工具(APScheduler、Redis、PG)优雅地组合在一起
- 维护省心:支持
aegis update同步模板改进
劣势
- 学习曲线:要搞透模块化CLI和Overseer监控,仍需一定上手时间
- 依赖偏好:如果你的团队习惯使用非主流组件(如想用MongoDB替代PG,或用Celery替代其内置Worker),手动定制的成本会抵消其带来的便利
- 环境要求:强依赖Docker和make工作流,在非类Unix环境下可能需要额外配置
实战
# 创建一个带用户鉴权的项目uvx aegis-stack init my-api--servicesauth# 添加异步处理能力aegisaddworker --project-path ./my-api# 启动开发环境,基于Dockercdmy-api&&makeserve