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内置函数的用法实例教程
Sep 08 Python
用Python给文本创立向量空间模型的教程
Apr 23 Python
在python中安装basemap的教程
Sep 20 Python
python组合无重复三位数的实例
Nov 13 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
详解Python的三种拷贝方式
Feb 11 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 Python
详解anaconda安装步骤
Nov 23 Python
Django自带的用户验证系统实现
Dec 18 Python
python使用numpy中的size()函数实例用法详解
Jan 29 Python
python中xlrd模块的使用详解
Feb 01 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
提问的智慧
2006/10/09 PHP
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
php类的定义与继承用法实例
2015/07/07 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
取选中的radio的值
2010/01/11 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
简单实现js浮动框
2016/12/13 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
python网络爬虫学习笔记(1)
2018/04/09 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
python selenium xpath定位操作
2020/09/01 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
某公司面试题
2012/03/05 面试题
村捐赠仪式答谢词
2014/01/21 职场文书
大家检讨书5000字
2014/02/03 职场文书
公司户外活动总结
2014/07/04 职场文书
年终晚会活动方案
2014/08/21 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
学校运动会广播稿
2014/10/11 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
安全责任书
2015/01/29 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python