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抓取网页图片并放到指定文件夹
Apr 24 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
python中退出多层循环的方法
Nov 27 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
python实现AES加密解密
Mar 28 Python
用Python生成HTML表格的方法示例
Mar 06 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
python开发一款翻译工具
Oct 10 Python
Python修改DBF文件指定列
Dec 19 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
繁体中文转换为简体中文的PHP函数
2006/10/09 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python 调用钉钉机器人的方法
2019/02/20 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
电气自动化大学生求职信
2013/10/16 职场文书
给孩子的新年寄语
2014/04/08 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
初中化学教学反思
2016/02/22 职场文书
python绘制箱型图
2021/04/27 Python
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
Golang流模式之grpc的四种数据流
2022/04/13 Golang
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL