资讯专栏INFORMATION COLUMN

Tornado vs Django选型分析

Arno / 904人阅读

摘要:前言项目中开发的几个服务一直使用作为服务器,本人也曾提出过疑问,为什么是,得到的答案是比较,,,的并发性能最好,而且最为轻量级。的卖点是超高的开发效率,其性能扩展有限的性能表现前两天有写一篇的帖子传送门使用对鉴权接口加压,看的性能表现。

前言

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


1. Tornado vs Django

整体思路就是列举收集到的框架优缺点,然后进行验证,从其他帖子收集到的优缺点汇总如下:

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

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


2. Django的性能表现

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

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


3. Tornado的性能表现

详情见我另外一个帖子:传送门
当然,被测环境资源完全一致,这里只贴结果:

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


4. 选型结论

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

5. 写在最后

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42774.html

相关文章

  • Django适合做大用户量的系统吗?

    摘要:百万量级的产品,扛起来并不费力。当你的网站或者接口有一个用户访问时,能在短时间内返回,那么,当用户量达到时,是否能在同样的时间内返回呢这是个问题。对于后端来说,把响应时间控制在合理的范围之内是很重要的。其他的也是类似。 分几点来答: 1. 首先,这其实是个技术选型题。 做技术选型的时候不能单纯的考虑性能,应该优先考虑业务类型,以及团队水平。另外的话,框架只是其中一环,还有配套呢。 如果...

    DataPipeline 评论0 收藏0
  • Django适合做大用户量的系统吗?

    摘要:百万量级的产品,扛起来并不费力。当你的网站或者接口有一个用户访问时,能在短时间内返回,那么,当用户量达到时,是否能在同样的时间内返回呢这是个问题。对于后端来说,把响应时间控制在合理的范围之内是很重要的。其他的也是类似。 分几点来答: 1. 首先,这其实是个技术选型题。 做技术选型的时候不能单纯的考虑性能,应该优先考虑业务类型,以及团队水平。另外的话,框架只是其中一环,还有配套呢。 如果...

    yuanxin 评论0 收藏0
  • 自己写一个 wsgi 服务器运行 DjangoTornado 等框架应用

    摘要:要使用协议我们不可能自己实现一个,现在比较流行的解决方案就是使用套接字编程,已经帮我们实现了协议的细节,我们可以直接拿来使用不用关心细节。 前几天写了 浅谈cgi、wsgi、uwsgi 与 uWSGI 等一些 python web 开发中遇到的一些名词的理解,今天博主就根据 wsgi 标准实现一个 web server,并尝试用它来跑 Django、tornado 框架的 app。 编...

    lunaticf 评论0 收藏0
  • 数据科学部门如何使用Python和R组合完成任务

    摘要:数据科学项目的完整流程通常是这样的五步骤需求定义数据获取数据治理数据分析数据可视化一需求定义需求定义是数据科学项目和数据科学比赛的最大不同之处,在真实情景下,我们往往对目标函数自变量约束条件都并不清晰。 概述 和那些数据科学比赛不同,在真实的数据科学中,我们可能更多的时间不是在做算法的开发,而是对需求的定义和数据的治理。所以,如何更好的结合现实业务,让数据真正产生价值成了一个更有意义的...

    Apollo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<