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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
Python(Tornado)模拟登录小米抢手机
Nov 12 Python
pygame学习笔记(5):游戏精灵
Apr 15 Python
python3序列化与反序列化用法实例
May 26 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
TensorFlow实现创建分类器
Feb 06 Python
python 实现dict转json并保存文件
Dec 05 Python
python numpy数组复制使用实例解析
Jan 10 Python
用Python生成HTML表格的方法示例
Mar 06 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
python中numpy数组与list相互转换实例方法
Jan 29 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桌面中心(二) 数据库写入
2007/03/11 PHP
PHP $_SERVER详解
2009/01/16 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
python实现对一个完整url进行分割的方法
2015/04/29 Python
pyenv命令管理多个Python版本
2017/03/26 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
python能自学吗
2020/06/18 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
Python类型转换的魔术方法详解
2020/12/23 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
优秀教师先进事迹
2014/01/22 职场文书
小学生综合素质评语
2014/04/23 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书