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的Flask框架中web表单的教程
Apr 20 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
python爬取酷狗音乐排行榜
Feb 20 Python
解析python实现Lasso回归
Sep 11 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
python numpy实现rolling滚动案例
Jun 08 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
python中upper是做什么用的
Jul 20 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
python和opencv构建运动检测器的实现
Mar 03 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/12/21 PHP
php array_map()数组函数使用说明
2011/07/12 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
python二元表达式用法
2019/12/04 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
小学六年级学生评语
2014/04/22 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
学校与家长安全责任书
2014/07/23 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
关于Python中*args和**kwargs的深入理解
2021/08/07 Python
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL