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写的图片蜘蛛人代码
Aug 27 Python
Cpy和Python的效率对比
Mar 20 Python
python实现的jpg格式图片修复代码
Apr 21 Python
Python装饰器基础详解
Mar 09 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
python 有效的括号的实现代码示例
Nov 11 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
python正则表达式re.search()的基本使用教程
May 21 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
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
destoon官方标签大全
2014/06/20 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
AngularJS内置指令
2015/02/04 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python Logging 日志记录入门学习
2018/06/02 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
Django框架反向解析操作详解
2019/11/28 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
如何获得EntityManager
2014/02/09 面试题
项目考察欢迎辞
2014/01/17 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
实验心得体会
2014/09/05 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
故意伤害辩护词
2015/05/21 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书