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 相关文章推荐
Python3 正在毁灭 Python的原因分析
Nov 28 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
Python数据类型详解(四)字典:dict
May 12 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
python3实现域名查询和whois查询功能
Jun 21 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
python regex库实例用法总结
Jan 03 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学习资源和链接.
2006/12/05 PHP
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
js实现分割上传大文件
2016/03/09 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
javascript学习之json入门
2016/12/22 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
浅析vue深复制
2018/01/29 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
Python函数学习笔记
2008/10/07 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Django中的Model操作表的实现
2018/07/24 Python
简单了解python单例模式的几种写法
2019/07/01 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
基于Pytorch SSD模型分析
2020/02/18 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
大学运动会通讯稿
2014/01/28 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
《凡卡》教学反思
2014/04/09 职场文书
《画风》教学反思
2014/04/16 职场文书
教师个人年终总结
2015/02/11 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
分享3个非常实用的 Python 模块
2022/03/03 Python
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers