python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)


Posted in Python onAugust 25, 2014

测了一下django、flask、bottle、tornado 框架本身最简单的性能。对django的性能完全无语了。

django、flask、bottle 均使用gunicorn+gevent启动,单进程,并且关闭DEBUG,请求均只返回一个字符串ok。

tornado直接自己启动,其他内容一致。

测试软件为 siege,测试os为cenos6 64位,测试命令为:

siege -c 100 -r 100 -b http://127.0.0.1:5000/

django测试结果为:
Transactions:               10000 hits

Availability:              100.00 %

Elapsed time:               18.51 secs

Data transferred:            0.02 MB

Response time:                0.18 secs

Transaction rate:          540.25 trans/sec

Throughput:                0.00 MB/sec

Concurrency:               99.35

Successful transactions:       10000

Failed transactions:               0

Longest transaction:            0.30

Shortest transaction:            0.12

django(去掉所有middleware)测试结果为:
Transactions:               10000 hits

Availability:              100.00 %

Elapsed time:               12.97 secs

Data transferred:            0.02 MB

Response time:                0.13 secs

Transaction rate:          771.01 trans/sec

Throughput:                0.00 MB/sec

Concurrency:               99.41

Successful transactions:       10000

Failed transactions:               0

Longest transaction:            0.28

Shortest transaction:            0.12

flask测试结果为:
Transactions:               10000 hits

Availability:              100.00 %

Elapsed time:                5.47 secs

Data transferred:            0.02 MB

Response time:                0.05 secs

Transaction rate:         1828.15 trans/sec

Throughput:                0.00 MB/sec

Concurrency:               96.25

Successful transactions:       10000

Failed transactions:               0

Longest transaction:            0.11

Shortest transaction:            0.00

bottle测试结果为:
Transactions:               10000 hits

Availability:              100.00 %

Elapsed time:                4.55 secs

Data transferred:            0.02 MB

Response time:                0.04 secs

Transaction rate:         2197.80 trans/sec

Throughput:                0.00 MB/sec

Concurrency:               96.81

Successful transactions:       10000

Failed transactions:               0

Longest transaction:            0.09

Shortest transaction:            0.00

tornado测试结果为:
Transactions:               10000 hits

Availability:              100.00 %

Elapsed time:                7.06 secs

Data transferred:            0.02 MB

Response time:                0.07 secs

Transaction rate:         1416.43 trans/sec

Throughput:                0.00 MB/sec

Concurrency:               99.51

Successful transactions:       10000

Failed transactions:               0

Longest transaction:            0.09

Shortest transaction:            0.01

可见纯框架自身的性能为:
bottle > flask > tornado > django

结合实际使用:

tornado 使用了异步驱动,所以在写业务代码时如果稍有同步耗时性能就会急剧下降;
bottle需要自己实现的东西太多,加上之后不知道性能会怎样;
flask性能稍微差点,但周边的支持已经很丰富了;
django就不说了,性能已经没法看了,唯一的好处就是开发的架子都已经搭好,开发速度快很多

因为最近正在为一个项目选型发愁,所以就测了一下,记录在此吧。

PS: 2014-6-23 使用 centos6 64位 重新进行了测试,得出与生产环境更匹配的结果,并修改了文章。

Python 相关文章推荐
Python实现全局变量的两个解决方法
Jul 03 Python
详解在Python程序中解析并修改XML内容的方法
Nov 16 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
使用tensorflow实现线性svm
Sep 07 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
python中Lambda表达式详解
Nov 20 Python
Python读取分割压缩TXT文本文件实例
Feb 14 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Python中的pprint模块
Nov 27 Python
python3编写C/S网络程序实例教程
Aug 25 #Python
python实现从字符串中找出字符1的位置以及个数的方法
Aug 25 #Python
Python实现根据指定端口探测服务器/模块部署的方法
Aug 25 #Python
python的类变量和成员变量用法实例教程
Aug 25 #Python
Python写的创建文件夹自定义函数mkdir()
Aug 25 #Python
Python中的startswith和endswith函数使用实例
Aug 25 #Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 #Python
You might like
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
Yii2如何批量添加数据
2016/05/17 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
python处理json数据中的中文
2014/03/06 Python
低版本中Python除法运算小技巧
2015/04/05 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
常见python正则用法的简单实例
2016/06/21 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
Tensorflow 实现释放内存
2020/02/03 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
django在开发中取消外键约束的实现
2020/05/20 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
Flink 侧流输出源码示例解析
2022/09/23 Servers