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实现tcp自动重连
Jul 02 Python
Python使用getpass库读取密码的示例
Oct 10 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
python生成器与迭代器详解
Jan 01 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
django如何通过类视图使用装饰器
Jul 24 Python
对Python _取log的几种方式小结
Jul 25 Python
python实现登录密码重置简易操作代码
Aug 14 Python
Python抓包程序mitmproxy安装和使用过程图解
Mar 02 Python
什么是python类属性
Jun 10 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Python如何使用input函数获取输入
Aug 06 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
PHP脚本的10个技巧(5)
2006/10/09 PHP
非常好的php目录导航文件代码
2006/10/09 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
Python实现的ini文件操作类分享
2014/11/20 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
网吧收银员岗位职责
2013/12/14 职场文书
企业军训感言
2014/02/08 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
护理医院见习报告
2014/11/03 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
主持人开场白台词
2015/05/29 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers