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实现将文本转换成语音的方法
May 28 Python
python字符串连接方法分析
Apr 12 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python set内置函数的具体使用
Jul 02 Python
python+rsync精确同步指定格式文件
Aug 29 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
Python 如何实现访问者模式
Jul 28 Python
Python扫描端口的实现
Jan 25 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管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
php实现socket推送技术的示例
2017/12/20 PHP
dojo随手记 gird组件引用
2011/02/24 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
python实现共轭梯度法
2019/07/03 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
python关于调用函数外的变量实例
2019/12/26 Python
python在地图上画比例的实例详解
2020/11/13 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
《童年的发现》教学反思
2014/02/14 职场文书
授权委托书怎么写
2014/04/03 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
亲戚关系证明
2015/06/24 职场文书
污染环境建议书
2015/09/14 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python