python写web难受-(2017)你最不建议使用的Python Web框架?
原标题:(2017)你最不建议使用的Python Web框架?
前言
这是一篇发在知乎专栏的文章,内容是之前我提的「(2017)你最不建议使用的Python Web框架?」下的回答。不过有些话没有说完,比如不建议tornado,却没有说对asyncio的看法,由于它的热度过去了我又懒就没有补充,今天就发在公众号下吧。
在知乎可以看到的很多Web框架推荐,有很多内容已经过时,有些直接是从网上搜的,自己根本没有真的用过,不知道推荐的时候他们的良心会不会痛,不过幸好有我来树立正确的价值观了。
第一不推荐 web.py
我以前说过,评价XX是否可以用在生产环境的一部分标准是:
代码质量。web.py的创始人Aaron Swartz自杀(官方说法)后,新的维护者能力实在是...
社区活跃程度和解决issue的能力。自己去github上去看未解决的issue和未合并的pull request数量
项目迭代情况。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一样,用下来需要造很多轮子,需要很多积累,并不是别人一朝一夕就能用的成熟的。
非常知名的 Python Guide 列了4个框架,除了Django和Flask,还列出了我刚推荐的 Pyramid,以及tornado。bottle、web.py什么的人家一概都不提。而且,我要说重点了,在介绍tornado的时候,Kenneth Reitz着重的加了这样的观点:
I do not recommend using Tornado unless you think you need it.
为啥这样说啊?
使用一个框架不只是框架自己,还要习惯它的编程方式。并不是用了tornado你的应用就是异步非阻塞的,性能就能刷刷涨,各种设施都要支持。我见过不少人写的tornado代码还是阻塞的,比如我前公司的某项目... (๑✦ˑ̫✦)。
使用框架还需要考虑它的社区和第三方的扩展环境。tornado的生态环境和Django/Flask根本就不是一个量级,质量也很差,指不上
tornado虽然确实可以当做web框架用,但是它优秀的地方在于它是一个异步的网络库,优势在扩展上w级别长连接上(相信一开始知乎就是考虑这点来做提醒)。这点要分清楚了。
前2天还好,但是第三条顿时引起了争议,我知道说话肯定没有Kenneth Reitz好使,所以引用他的话。其实犹之乎的同学来发表了意见,我还无意中发现,知乎产品总监来点了赞哦。嘻嘻,其实你真的写过复杂的tornado的项目就知道了,我不推荐的原因正面的讲:
tornado对于刚起步的公司或者新学Web框架的同学来说不合适。一处阻塞,全局阻塞,这对开发者的要求是很高的,我在14年的时候就想过做一个质量保证的工具,但是思考了一下,AST模块对于业务逻辑是束手无策的,你看到现在也没有看到这样的东西。
tornado是Python 2的产物,现在有了更好的解决方案asyncio。
那我们继续这个第二条:
我也是推荐至少学一个异步框架的,过去能看到的有Gevent,Twisted,一个是Hack的,另外一个现在已经被打入了冷宫,到今天当然是不推荐的。那么最好的就是官方的asyncio。
sanic/aiohttp这种框架的前景是好的,只不过现在我还没有看见某大型产品使用它们的实践经验,asyncio生态也还并不完善,暂不推荐进生产环境。
最后,你真的有需求要实现长连接,上asyncio,对于一个从无到有的过程,tornado和它并没有什么优势。
另外欢迎参与 的投票!
责任编辑:
python写web难受-(2017)你最不建议使用的Python Web框架?相关推荐
- 属于web框架的python库_(2017)我不建议使用的Python Web框架
昨天我提了一个问题 (2017)你最不建议使用的Python Web框架? 下面是在原问题下的回答,看过的同学可以点赞关闭了. --- 分割线 --- 在知乎可以看到的很多Web框架推荐,有很多内容已 ...
- pythonweb好难-(2017)我不建议使用的Python Web框架
昨天我提了一个问题(2017)你最不建议使用的Python Web框架?下面是在原问题下的回答,看过的同学可以点赞关闭了. --- 分割线 --- 在知乎可以看到的很多Web框架推荐,有很多内容已经过 ...
- python写登录界面跳转至数据库操作_pycharm+jdango+python实现创建web工程并实现简单登陆...
本文通过pycharm和流行的python web开发框架jdango以及python3.6实现创建web工程并且实现简单登陆的功能. Pycharm下载不再细说,python下载也不再说,jdang ...
- python写一个系统-熬了一晚上,小白用Python写了一个股票提醒系统
码农小马七夕节去相亲了,见了一个不错的姑娘,长的非常甜美!聊着聊着很投缘!通过介绍人了解到,对方也很满意--想着自己单身多年的生活就要结束啦,心里满是欢喜,美美哒!但是突然想起年初还有几万块在股市里面 ...
- 吃鸡是python写的吗_吃鸡手游竟然是Python写的?
软妹子也要学Python 听起来这么高大上的Python是不是很难学?并没有. 北邮在2010年就出版过一本<和孩子一起学Python>,Python真的是容易入门到可以作为亲子娱乐项目的 ...
- python写出的程序如何给别人使用-如何用PYTHON代码写出音乐
什么是MIDI 博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的.我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深度学习写歌词已经实现了,之后会分 ...
- Python写出一个字节,一个YouTube,我用Python怎么了!
Python 近两年一直霸占编程语言排行榜 TOP10,受欢迎程度有目共睹.其实在企业招聘层面也可以从侧面看出,大中小企业甚至国营企业已经陆续开始使用 Python 开发. 国内用 Python 最广 ...
- 用python写一个彩票过滤器_python入门教程NO.6 用python做个简单的彩票号码统计分析工具...
python入门教程 python入门教程NO.6 用python做个简单的彩票号码统计分析工具 本文涉及的python基础语法是:字典.集合及for循环 字典的定义 字典也是一种可变的容器,它可以存 ...
- 吃鸡是python写的吗_吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~...
原标题:吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~ 吃鸡游戏火爆全球,已经把腾讯的<王者荣耀>都比下去了,有传言,腾讯给"王者荣耀"开 ...
- python写迷你小游戏下载_狼人杀?用Python自己写个迷你版狼人杀游戏,自己的游戏自己做主...
狼人杀估计很多小伙伴都玩过,是一个非常有趣的游戏!以前公司团建的时候,经常一堆人围一桌玩,心理素质比较高的同学会玩的比较好,有的时候一玩会从下午玩到晚上,真的非常怀念那段时光,今天我们用Python写 ...
最新文章
- vs 2005 與vs 2003 語法比較
- docker 删除所有容器和镜像的命令
- 这个搞定系统监控的妙招,不来学可惜了
- python tensorflow 智能家居_TensorFlow平台下的视频目标跟踪深度学习模型设计
- 6个步骤卸载wine
- python读取xlsx文件年月日变成数字_python转化excel数字日期为标准日期操作
- SynchronousQueueE简介
- 支付业务与技术架构学习总结(4)——对账相关业务知识及对账系统总结
- ORM框架之Mybatis(四)MyBatis生成器,逆向工程生成实体类和SQL
- Android深度探索--HAL与驱动开发----第三章读书笔记
- OSX 鼠标和键盘事件
- 2022美国大学生数学建模竞赛(美赛)思路代码
- can通信中如何设置屏蔽验收码的总结
- 安卓屏幕朗读app_android录屏app推荐?安卓手机屏幕录制方法步骤教程
- (转)什么是BD,怎么做一个好BD
- pip install paddlepaddle 报错 command ‘/usr/bin/gcc‘ failed with exit code 1 或 command ‘gcc‘ 报错
- python之有关关键字参数,默认参数,不定长参数,位置参数的定义,区别,以及使用方法。
- 百旺信息服务器端口,各省百旺参数设置服务器地址
- Eigen::常用操作[转]
- ChatGPT玩法大全火了,一键复制就能get同款效果:脱口秀张口就来,还能扮演哈利波特...