Tornado vs Django选型分析

前言

项目中开发的几个服务一直使用tornado做为http服务器,本人也曾提出过疑问,为何是tornado,获得的答案是比较tornado,flask,django,tornado的并发性能最好,并且最为轻量级。今天好不容易有点空余时间,忽然强迫症发做,想搞清楚tornado真的并发比django强吗?为何django的中间件的优点就被忽略了呢?python


1. Tornado vs Django

总体思路就是列举收集到的框架优缺点,而后进行验证,从其余帖子收集到的优缺点汇总以下:web

Tornado:
优势:轻量、异步非阻塞IO处理方式、出色的抗负载能力、协程带来优异的处理性能
缺点:没有ORM,提供的支持和模板少,缺乏后台支持,对小型项目来讲开发速度没有django快
分析:tornado所谓的“缺点”是由它的设计理念决定的,设计上就决定它是一个小而精的http服务器+轻量级web框架,高并发处理才是它真正擅长的sql

Django:
优势:大而全的框架,全自动化的管理后台带来超高的开发效率,丰富的组件
缺点:厚重,与他本身的ORM高耦合
分析:Django提供的方便,也意味着Django内置的ORM跟框架内的其余模块耦合程度高。应用程序必须使用Django内置的ORM,不然就不能享受到框架内提供的种种基于其ORM的便利;理论上能够切换掉其ORM模块,但这就至关于要把装修完毕的房子拆除从新装修,倒不如一开始就去毛胚房作全新的装修。Django的卖点是超高的开发效率,其性能扩展有限django


2. Django的性能表现

前两天有写一篇django的帖子:传送门
使用jmeter对鉴权接口加压,看django的性能表现。
使用的是双核,8G内存的centos机器,200并发的测试结果:flask

clipboard.png

tps只有2.6,最大时延到了77ssegmentfault


3. Tornado的性能表现

详情见我另一个帖子:传送门
固然,被测环境资源彻底一致,这里只贴结果:centos

clipboard.png

最大时延484ms,TPS达到了126服务器


4. 选型结论

并发性能差距这么多,固然与django使用默认的sqlite也有关系,但也必定程度上反应django的orm+模板的机制,在提供丰富功能模板的同时,在性能上也作出了牺牲.不过有帖子贴出的性能对比,django的并发数量竟然超过了tornado,不知道数据是否靠谱.并发

5. 写在最后

原本还想引入sanic的性能表现,但sanic只支持python3.5+版本,手头的环境不知足要求,升级起来比较麻烦,这里先留一个坑,后续有环境再测试对比.
看其余帖子的数据,sanic的 并发性能可能会超过tornado,待后续验证框架

相关文章
相关标签/搜索