跳转至

FastAPI

FastAPI、Django、Flask

  • 重型企业级全栈项目,选Django(自带admin后台)
  • 纯API服务且追求极致性能,选FastAPI
  • 轻量灵活、需要高度定制或做胶水层,选Flask

核心架构与性能

对比维度 Django FastAPI Flask
框架定位 全栈重量级(内置一切) API专用轻量级(极致性能) 微内核核心(高度自由)
接口协议 WSGI(原生)
ASGI(实验性,支持不佳)
ASGI(底层Starlette,原生异步) WSGI(原生)
async仅为语法糖,底层不变
并发模型 同步阻塞(多进程/多线程) 事件循环(单线程异步非阻塞) 同步阻塞(多线程,受限于GIL)
基准性能 中等(较重,启动慢) 最高(I/O密集场景领先2~3倍) 中等(轻量启动快,但并发能力弱)
WSGI/ASGI
  • WSGI: 标准的通信协议,同步阻塞;适合CPU密集型业务,但高并发下线程开销极大。
  • ASGI: 异步非阻塞 + 事件循环,使单个线程可撑起大量并发;使Python拥有Node.js/Go那样的高并发能力,适合IO密集型(调数据库、调第三方API)的微服务。
  • 语法糖: 让代码写起来更爽、读起来更优雅的简化写法,没有改变底层逻辑。
  • 胶水层: 适配转换头,用来做协议转换、数据清洗、路由转发等。

开发体验与生态

对比维度 Django FastAPI Flask
开箱即用程度 极高(内置Auth、表单、中间件) 中等(自带校验和文档,缺ORM/鉴权) 极低(仅路由和模板,其余全手搭)
API文档生成 需集成drf-yasg等第三方库 自动生成Swagger/OpenAPI(零配置) 需集成Flask-RESTX等第三方库
ORM与数据库 强绑定自带ORM(自动迁移,跨库) 无绑定(常配SQLAlchemy异步/SQLModel) 无绑定(社区标配Flask-SQLAlchemy)
灵活性(自由度) 极低(Django生态强约束) 较高(组件可自由组装) 最高(每个组件都可随意替换)
实现同等API代码量 最少 适中 最多(需手动处理序列化/校验)

适用场景与选型决策

应用场景 首选框架 核心理由(面试话术)
复杂ERP、电商主站、OA系统 Django Admin后台是杀手锏,内置功能避免造轮子,长期维护成本最低。
高并发对外API、微服务网关、ML模型部署 FastAPI 异步高性能 + 自动生成API文档 + 类型安全(Pydantic),前后端联调极快。
轻量级单体服务、快速原型验证、物联网网关 Flask 资源占用极低,启动速度最快,且侵入性最小,适合做胶水层。
遗留系统改造或中间件(BFF)层 Flask 代码透明,极易与老旧同步代码集成,改造成本最低。

高阶陷阱与认知深度

高阶知识点 Django / Flask(同步阵营) FastAPI(异步阵营)
异步的真实性 异步支持基本是语法糖,底层Worker仍是同步阻塞,无法突破GIL。 原生异步,但必须搭配asyncpg或异步ORM才能发挥威力。
常见的性能陷阱 并发量受限于线程池大小,调高线程数会导致上下文切换开销剧增。 若误用了同步阻塞的SQLAlchemy或未配置数据库连接池,性能会直接退化到Flask水平。

SQLAlchemy 2.0 支持同步和异步两种方式: psycopg2(同步阻塞)、asyncpg(异步非阻塞)。