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计算三角函数之acos()方法的使用
May 15 Python
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
Python cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
Python测试人员需要掌握的知识
Feb 08 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
python 同时读取多个文件的例子
Jul 16 Python
详解Django定时任务模块设计与实践
Jul 24 Python
python实现用户名密码校验
Mar 18 Python
Python 实现PS滤镜的旋涡特效
Dec 03 Python
详解python的内存分配机制
May 10 Python
python实现学员管理系统(面向对象版)
Jun 05 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/10/09 PHP
我用php+mysql写的留言本
2006/10/09 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python如何获取系统iops示例代码
2016/09/06 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
消防安全宣传标语
2014/06/07 职场文书
实习协议书范本
2014/09/25 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
教师学习心得体会范文
2016/01/21 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python