2025年了,在 Django 之外,Python Web 框架还能怎么选?
2025年了,Django之外还剩啥?LiteStar轻量快,Tortoise ORM省心,Granian丢掉Nginx,RobynPython+Rust。独立开发者终于不用被全家桶绑架?
目录6 个章节
前言
大家好,我是曦远~
前段时间我写过一篇文章 《Django过时了吗?从ASGI到AI时代的思考》,聊到在 AI 时代下,传统全家桶式框架(比如 Django)该如何面对新趋势。
最近在翻新 DjangoStarter 项目的时候,我顺便做了一些调研,发现 Python Web 生态的变化比我想象得还要快。
一方面,老牌选手 Django 也有了像 Ninja 这样的新鲜外挂;另一方面,如果不走 Django 全家桶路线,还有一批正在崛起的轻量级框架和工具,把 Python Web 推向了一个新的阶段:轻量化 + 异步优先 + Rust 加持。
所以这篇文章,我就来聊聊 2025 年值得关注的几个新选择:LiteStar、Tortoise ORM、Granian 和 Robyn。
LiteStar
LiteStar 是一个基于 ASGI 的新兴框架,定位有点像 FastAPI 的进化版。
- 优点:类型提示完整、依赖注入自然、性能不错。
- 缺点:脱离 Django 生态后,ORM/后台管理都要自己选配。
- 适合人群:独立开发者、小型项目,追求轻量 + 灵活。
我在试用的时候,最大的感觉是:写法清爽,没有 Django 那么多历史包袱。
后续我会拿 LiteStar 来开发一个正式的项目试试水。
到时再来分享一波。
异步 ORM
脱离了 Django 生态,最不习惯的应该就是 ORM。
LiteStar 没有内置 ORM,那选谁?我个人推荐 Tortoise ORM。
这玩意写法和 Django ORM 非常像
class Event(Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=255)
start_time = fields.DatetimeField()
是不是有点眼熟?
对 Django 用户来说学习成本很低。
- 优点:异步原生,写法和 Django ORM 一致。
- 缺点:生态规模不如 Django ORM,社区活跃度有待观察。
如果习惯了 Django ORM,但又想要 async/await,Tortoise ORM 是个不错的选择。
Granian
Rust 驱动的高性能服务器
部署层面,我最近发现一个新玩意:Granian。
- 用 Rust 写的 ASGI 服务器,比 Uvicorn/Daphne 更快。
- 可以直接处理静态文件,很多场景下连 Nginx 都不用。
- 内置多 worker,部署流程更简单。
换句话说:一次性代替 Daphne + Nginx。
我准备在 DjangoStarter 的后续实验里用 Granian 来跑,看看能不能省下一层反向代理。毕竟最近正头疼 DjangoStarter 的 Nginx 配置要如何优雅整合 URL Prefix 功能呢🤣
Robyn
Python 写法 + Rust 性能
另一个值得关注的是 Robyn。它的思路是:用 Rust 写底层 runtime,用 Python 提供 API 层。
这样既有 Python 的易用性,又能跑到接近 Node.js/Rust 框架的性能。
- 内置路由、静态文件、模板
- 高性能异步 runtime
- 对开发者友好,写法接近 Flask/FastAPI
看起来是个很酷的框架,把 Python 的易用性 + Rust 的性能结合起来,一言以蔽之就是「生产力与速度兼顾」,感觉也可以玩一玩
小结
2025 的 Python Web 生态,已经不只是 Django vs Flask vs FastAPI。
新的趋势是:
- 框架更轻量(LiteStar)
- ORM 原生异步(Tortoise)
- 部署层更快更简单(Granian)
- Rust 加持性能(Robyn)
我的感受是:Django 依然重要,但新框架给独立开发者和小团队带来了更多可能性。
未来我会在实际项目里试试 Robyn 和 Granian,看看能不能让 Python 写法 + Rust 性能落地。
_EOF_
2025年了,在 Django 之外,Python Web 框架还能怎么选?
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
使用Python+FFMPEG实现视频分割与合并
前言 日常中偶尔会遇到需要简单剪辑处理视频的场景,以前我可能会拿出PR来剪辑一下,(别跟我说国产那些软件,剪辑完视频强制加上广告片头片尾恶心的一批),但是PR毕竟太重量级,剪个简单的视频都要花不少时间,直到我发现了FFmpeg…… 这个FFmpeg真的是神器,免费开源功能强大,好像很多软件都是基于这个开发的,它本身提供了命令行接口就已经能满足我们日常的简单视频处理需求,我用来简单处理视频分割、合并
2022-05-27 · Python · 约 1 分钟
Python-缓存机制与-functools-lru_cache
缓存是一种将定量数据加以保存以备迎合后续获取需求的处理方式,旨在加快数据获取的速度。数据的生成过程可能需要经过计算,规整,远程获取等操作,如果是同一份数据需要多次使用,每次都重新生成会大大浪费时间。所以,如果将计算或者远程请求等操作获得的数据缓存下来,会加快后续的数据获取需求。 先来一个简单的例子以了解缓存机制的概念: # -*- coding: utf-8 -*- import random
2022-05-27 · Python · 约 1 分钟
Python中的双端队列:collections-deque
关于deque 起因是我想做一个「手气不错」的功能,为了提高性能,打算用队列实现,偶然在Stack Overflow看到一个讨论「Efficiency of using a Python list as a queue」 python的list有pop方法,可以实现队列的取出功能,不过据说性能一般般,高赞回答说的 You won't run out of memory using the list
2021-12-18 · Python · 约 1 分钟
升级pip之后连pip都不能用了?简单解决方法
前言 最近在服务器上部署项目的时候,用pip安装库,结果提示可以升级,那我就按照提示升级了pip,结果pip就用不了了。 错误信息如下: Traceback (most recent call last): File /usr/bin/pip3, line 9, in module from pip import main ImportError: cannot import name
2021-12-18 · Python · 约 1 分钟
讨论
共 0 条加载评论中…