返回文章列表文章索引阅读全文
STARBLOG / 阅读手记
Python

2025年了,在 Django 之外,Python Web 框架还能怎么选?

2025年了,Django之外还剩啥?LiteStar轻量快,Tortoise ORM省心,Granian丢掉Nginx,RobynPython+Rust。独立开发者终于不用被全家桶绑架?

曦远 (DealiAxy)约 6 分钟
目录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实现

又是造轮子系列咯,Python上有很多成熟完善的异步任务队列框架可以用,比如Celery,或者RQ,不过这些都不自带消息队列服务,都需要使用Redis、RabbitMQ之类的消息队列才行,我用到小项目中又不需要附带这么多东西,于是自己动手来实现咯。 思路 将需要异步执行的任务添加到队列 自动从队列中取出任务,创建新线程执行 保存任务的执行结果和输出 任务完成,调用回调函数,处理返回的数据 使用输出

2021-12-18 · Python · 约 1 分钟

关于Python的异常处理

前言 异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题。在Python中,和部分高级语言一样,使用了try/except/finally语句块来处理异常,如果你有其他编程语言的经验,实践起来并不难。 Python 中(至少)有两种错误:语法错误和异常( syntax errors 和 exceptions )。下面稍微介

2022-05-27 · Python · 约 1 分钟

讨论

共 0 条

良言一句三冬暖,恶语伤人六月寒。

加载评论中…