系列:Python Web 框架
一说 Python Web 框架,你可能最先想到 Django 和 FastAPI——本专题前面几篇讲的也是它们俩。但这俩只是冰山上露出水面的部分。Python 的 Web 框架生态其实挺宽的,不同框架被设计出来解决不同的难题,了解它们之间的边界,用的时候心里有数。
我写这篇文章的出发点很简单:把市面上还算活跃的 Python Web 框架捋一遍——不只是列名字,而是说清楚每个框架到底适合干什么、不适合干什么,以及我个人的判断。文中的数据来自 JetBrains 2025 年开发者调查,以及各个框架在 GitHub 和 PyPI 上的公开数据。
第一梯队:你可以闭眼选的三个
这三个框架加一起占了 Python Web 开发八成以上的份额。随便打开一个 Python 后端的招聘 JD,十有八九是在这三家里打转。
Django — 全栈,开箱即用
Django 从 2005 年活到现在,贡献了一个判断 Web 框架成熟度的经典指标:它有没有自带 admin 后台。Django 的 admin 能省掉内部管理系统大半的 CRUD 工作。
它的设计哲学是”什么东西都给你准备好”——ORM、模板引擎、用户认证、表单校验、CSRF 防护、缓存、信号、中间件,打开项目就能直接写业务。Django 6.0(2025 年底发布)补上了异步 ORM 和内置后台任务框架,跟上了异步的趋势,但核心骨架还是同步的。
Instagram 用它撑了 20 亿用户,Disqus 用它处理每秒四万五的请求——框架本身不是瓶颈。
适合:内容平台、电商后台、CMS、企业内部系统。不适合:纯 API 服务(用 DRF 也可以但路径更长)、对异步性能有极端要求的场景。
本专题有 Django 安装与使用指南 和 Django 进阶使用指南。
FastAPI — API 优先,开发快
FastAPI 是 2018 年冒出来的,到 2026 年 GitHub Star 数已经突破九万,超过 Django。JetBrains 调查显示它的使用率从 2023 年的 29% 窜到 2025 年的 38%,是 Python 生态里增速最快的框架。
它的核心卖点就三个:类型提示自动生成 API 文档、Pydantic 做数据校验、原生异步。写一个接口同时完成了路由、校验、文档三件事,不需要额外插件。
Netflix、Uber、Microsoft 都在生产环境跑它,AI/ML 领域 42% 的工程师用它做模型推理服务。
适合:前后端分离的 REST API、微服务、AI 模型推理接口、WebSocket 实时服务。不适合:需要后台管理界面的内部系统、服务端渲染的多页面应用。
本专题有 FastAPI 安装与使用指南 和 FastAPI 进阶使用指南。
Flask — 轻量,什么都得自己选
Flask 是三个框架里资格最老的”微框架”——核心代码很少,全靠社区扩展撑起来。PyPI 月下载量超过一亿次,存量极其庞大。
学习和上手确实快。一个文件几十行代码就能跑一个 Web 应用。但问题是,当你需要 ORM、表单校验、用户认证、API 文档这些东西时,得自己一个插件一个插件地装。Flask 本身没有异步原生的 I/O 能力,协程跑在独立线程上,跟真正的异步不是一回事。
它特别适合小项目、原型验证和内部工具——很多东西不需要上 Django 或者 FastAPI 那种完整框架。但如果你一开始就知道项目会膨胀,Flask 未必是最优解。
适合:小型 API、原型、机器学习 demo、内部工具。不适合:需要异步高并发的生产系统、团队规模大了之后容易失控的项目。
第二梯队:在特定方向上走得更远
这几个框架没进第一梯队的核心原因是社区规模——招人难、遇到冷门问题 Stack Overflow 上搜不到答案。但在技术层面上,它们在各自擅长的方向比第一梯队做得更好。
Litestar — 架构最干净的异步框架
Litestar 前身叫 Starlite,2024 年改名。Star 数六千多,社区小,但技术设计上是 FastAPI 的最强竞争者。
它的序列化基于 msgspec——比 Pydantic 快两到三倍。路由用的是 Controller 类而非函数,对大项目的组织更友好。内置了依赖注入、CSRF 保护、会话管理,不需要额外装插件。TechEmpower 基准测试中跑出 120 万 req/s,而 FastAPI 是 72 万。
但问题也很明显:社区太小,很难招到用过的人,第三方生态基本没有。选它意味着团队要承担生态风险。
适合:对架构设计有追求的小团队、性能敏感的异步 API。不适合:需要丰富第三方生态或依赖社区支持的大团队。
Sanic — 就一个字,快
Sanic 2016 年出现,比 FastAPI 还早两年。它是 Python Web 框架里最早一批做原生异步的,基于 uvloop,语法上跟 Flask 很像。
性能在 Hello World 级别能跑到 15000+ req/s,在 Python 框架里数一数二。自己带 Web 服务器,不依赖 Gunicorn。24.x 版本加了 HTTP/3 支持。
短板是它不是 ASGI 兼容的——这意味着 ASGI 生态的中间件、工具基本都用不了。也不内置数据校验,得自己处理。
适合:高流量 API 网关、IoT 数据采集、WebSocket 密集场景。不适合:需要 ASGI 中间件生态或内置校验的系统。
Tornado — WebSocket 老炮
Tornado 最初是 FriendFeed 内部开发的,后来被 Facebook 收购,在异步 Python 这块算是鼻祖级。Jupyter、IPython 的底层用的是它。
非阻塞 I/O 和 WebSocket 的支持非常成熟——单机能扛上万并发连接。但 API 风格确实老了,跟现代 async/await 语法不太搭。新项目几乎不会选它,现有 Tornado 代码库大概率在维护模式。
适合:维护老项目、WebSocket 密集的实时系统(聊天、行情推送)。不适合:新项目——FastAPI 或 Sanic 在异步这块已经做得很好了。
第三梯队:有特定价值但不推荐新项目选
Pyramid 的口号是”从小做起,逐步做大”。架构设计上确实灵活得过分——它不限定 ORM、模板引擎、路由风格,你可以一步一步往上加组件。Mozilla 和 Yelp 的部分系统在用它。但社区实在太小(Star 数不到四千),文档也散。对多数团队来说,Django 或 FastAPI 就够了。
Falcon 是个极简的 API 框架,专门为裸金属性能优化。适合在已经有完整架构的系统中嵌入几个高性能端点,不是给从头搭项目用的。
Quart 是 Flask 的异步重写版,API 跟 Flask 基本一致。如果你很熟悉 Flask 但需要异步,可以用 Quart 过渡。
到底怎么选
选框架这件事,很多时候不是因为 A 比 B 技术好,而是因为 A 刚好跟你的场景匹配。我的经验是自下往上筛:
-
你要做的是前后端分离的 API 还是连模板一起渲染的网站?
- API → FastAPI、Litestar、Sanic
- 网站(服务端渲染)→ Django、Flask
-
需要后台管理界面吗?
- 需要 → Django。它的 admin 省下来的时间远超过框架本身的学习成本。
-
团队多大,招人好招吗?
- 团队大 / 人员流动 → Django 或 FastAPI。看 JD 数量就知道了。
- 小团队 / 长期稳定 → 可以考虑 Litestar 或 Sanic。
-
对异步和高并发有硬性要求吗?
- 有 → FastAPI / Litestar / Sanic,别用 Flask。
- 没有 → 随便选。
-
项目几年后会变成什么样?
- 不知道 / 可能会长很大 → Django 或 FastAPI,它们的生态能兜底。
- 很清楚就是个小工具 → Flask,杀鸡不用牛刀。
如果你看完还是不确定,用 FastAPI——它是最安全的默认选择。
一张表
| 框架 | 类型 | 性能 | 学习曲线 | 社区 | 最适合 |
|---|---|---|---|---|---|
| Django | 全栈 | 中 | 陡 | 极大 | CMS、后台系统、内容平台 |
| FastAPI | API | 高 | 平缓 | 大 | REST API、微服务、AI 推理 |
| Flask | 微框架 | 低-中 | 极低 | 极大 | 小项目、原型、内部工具 |
| Litestar | API | 很高 | 中 | 小 | 追求架构和性能的异步 API |
| Sanic | API | 很高 | 中 | 中 | 高流量网关、IoT、实时服务 |
| Tornado | 异步 | 中-高 | 陡 | 中 | 老系统维护、WebSocket 密集 |
| Pyramid | 全栈 | 中 | 陡 | 很小 | 需要极度定制化的长周期项目 |
数据来源:JetBrains Developers Survey 2025、PyPI Stats、GitHub、TechEmpower 基准测试。时间节点是 2026 年 6 月。
总结
Python Web 框架的世界没有正确的选择,只有合适的匹配。
Django 赢在”什么都有”,FastAPI 赢在”API 开发体验”,Flask 赢在”足够简单”。Litestar 和 Sanic 在技术上不输甚至更强,只是生态还需要时间。Tornado 和 Pyramid 是功臣级框架,曾经的辉煌是真的,现在新项目几乎不选也是真的。
如果你刚接触 Python Web 开发,本专题前面几篇从 FastAPI 安装与使用指南、Django 安装与使用指南 和 Flask 安装与使用指南 开始,把最重要的三个框架吃透;需要在 Django 和 FastAPI 之间做项目决策时,再看 Django 与 FastAPI 对比:如何选择合适的 Python Web 框架。框架选定之后,Python Web 项目结构怎么设计 比继续比较框架更重要。