(2017)我不建议使用的Python Web框架

(2017)我不建议使用的Python Web框架

董伟明董伟明

昨天我提了一个问题(2017)你最不建议使用的Python Web框架?下面是在原问题下的回答,看过的同学可以点赞关闭了。

--- 分割线 ---

在知乎可以看到的很多Web框架推荐,有很多内容已经过时,有些直接是从网上搜的。我又来树立正确的价值观了。

第一不推荐 web.py

我以前说过,评价XX是否可以用在生产环境的一部分标准是:

1. 代码质量。web.py的创始人Aaron Swartz自杀(官方说法)后,新的维护者能力实在是...

2. 社区活跃程度和解决issue的能力。自己去github上去看未解决的issue和未合并的pull request数量

3. 项目迭代情况。webpy-0.37 on Jun 26, 2012,webpy-0.38 on Jul 8, 2016。到现在一年就这样过去了然鹅什么都还没有发生。

第二不推荐 bottle

bottle其实是第一个使用装饰器作为路由的框架,不过它也存在社区活跃程度和解决issue的能力的问题,其实这说明了一个问题,它更像是某个(些)人的玩具,并不关心用户反馈。不知道大家是否知道它和Flask的故事(简单的说Flask 的作者Armin Ronacher开发了Werkzeug推荐给Bottle作者,但是Bottle作者非常执着于“单文件”和“无依赖”,拒绝了使用 Werkzeug,Armin Ronacher就自己写了Flask),如果3-4年前你选择bottle我也是没意见的,现在来看Flask完爆它,哪怕是自己写的demo,你说你用了一个不适合在生产环境中使用框架的意义在哪里?完全没有积累啊。不过客观的说读源码学习写框架倒是可以的

第三不推荐 tornado

别说知乎也在用,用得好不好,用的有多苦他们自己知道 ✧(≖ ◡ ≖✿)。这个就跟豆瓣用Quixote一样,用下来需要造很多轮子,需要很多积累,并不是别人一朝一夕就能用的成熟的。

非常知名的 Web Applications & Frameworks 列了4个框架,除了Django和Flask,还列出了我刚推荐的 Pyramid,以及tornado。bottle、web.py什么的人家一概都不提。而且,我要说重点了,在介绍tornado的时候,Kenneth Reitz着重的加了这样的观点:

I do not recommend using Tornado unless you think you need it.

为啥这样说啊?

1. 使用一个框架不只是框架自己,还要习惯它的编程方式。并不是用了tornado你的应用就是异步非阻塞的,性能就能刷刷涨,各种设施都要支持。我见过不少人写的tornado代码还是阻塞的,比如我前公司的某项目... (๑✦ˑ̫✦)

2. 使用框架还需要考虑它的社区和第三方的扩展环境。tornado的生态环境和Django/Flask根本就不是一个量级,质量也很差,指不上

3. tornado虽然确实可以当做web框架用,但是它优秀的地方在于它是一个异步的网络库,优势在扩展上w级别长连接上(相信一开始知乎就是考虑这点来做提醒)。这点要分清楚了。

文章被以下专栏收录
53 条评论
推荐阅读