请选择 进入手机版 | 继续访问电脑版

北南南北论坛

 找回密码
 立即注册
查看: 17|回复: 0

python常用web框架性能测试(django,flask,bottle,tornado)

[复制链接]

250

主题

367

帖子

1101

积分

金牌会员

Rank: 6Rank: 6

积分
1101
发表于 2017-12-16 09:27:02 | 显示全部楼层 |阅读模式
测了一下django、flask、bottle、tornado 框架本身最简单的性能。对django的性能完全无语了。

django、flask、bottle 均使用gunicorn+gevent启动,单进程,并且关闭DEBUG,请求均只返回一个字符串ok。

tornado直接自己启动,其他内容一致。

测试软件为 siege,测试os为cenos6 64位,测试命令为:
  1. siege -c 100 -r 100 -b http://127.0.0.1:5000/
复制代码

django测试结果为:
  1. Transactions:                       10000 hits
  2. Availability:                      100.00 %
  3. Elapsed time:                       18.51 secs
  4. Data transferred:                0.02 MB
  5. Response time:                        0.18 secs
  6. Transaction rate:              540.25 trans/sec
  7. Throughput:                        0.00 MB/sec
  8. Concurrency:                       99.35
  9. Successful transactions:       10000
  10. Failed transactions:                   0
  11. Longest transaction:                0.30
  12. Shortest transaction:                0.12
复制代码
       django(去掉所有middleware)测试结果为:
  1. Transactions:                       10000 hits
  2. Availability:                      100.00 %
  3. Elapsed time:                       12.97 secs
  4. Data transferred:                0.02 MB
  5. Response time:                        0.13 secs
  6. Transaction rate:              771.01 trans/sec
  7. Throughput:                        0.00 MB/sec
  8. Concurrency:                       99.41
  9. Successful transactions:       10000
  10. Failed transactions:                   0
  11. Longest transaction:                0.28
  12. Shortest transaction:                0.12
复制代码
       flask测试结果为:

  1. Transactions:                       10000 hits
  2. Availability:                      100.00 %
  3. Elapsed time:                        5.47 secs
  4. Data transferred:                0.02 MB
  5. Response time:                        0.05 secs
  6. Transaction rate:             1828.15 trans/sec
  7. Throughput:                        0.00 MB/sec
  8. Concurrency:                       96.25
  9. Successful transactions:       10000
  10. Failed transactions:                   0
  11. Longest transaction:                0.11
  12. Shortest transaction:                0.00
复制代码

bottle测试结果为:
  1. Transactions:                       10000 hits
  2. Availability:                      100.00 %
  3. Elapsed time:                        4.55 secs
  4. Data transferred:                0.02 MB
  5. Response time:                        0.04 secs
  6. Transaction rate:             2197.80 trans/sec
  7. Throughput:                        0.00 MB/sec
  8. Concurrency:                       96.81
  9. Successful transactions:       10000
  10. Failed transactions:                   0
  11. Longest transaction:                0.09
  12. Shortest transaction:                0.00
复制代码


tornado测试结果为:

  1. Transactions:                       10000 hits
  2. Availability:                      100.00 %
  3. Elapsed time:                        7.06 secs
  4. Data transferred:                0.02 MB
  5. Response time:                        0.07 secs
  6. Transaction rate:             1416.43 trans/sec
  7. Throughput:                        0.00 MB/sec
  8. Concurrency:                       99.51
  9. Successful transactions:       10000
  10. Failed transactions:                   0
  11. Longest transaction:                0.09
  12. Shortest transaction:                0.01
复制代码

可见纯框架自身的性能为:

  1.     bottle > flask > tornado > django
复制代码

结合实际使用:

  •     tornado 使用了异步驱动,所以在写业务代码时如果稍有同步耗时性能就会急剧下降;
  •     bottle需要自己实现的东西太多,加上之后不知道性能会怎样;
  •     flask性能稍微差点,但周边的支持已经很丰富了;
  •     django就不说了,性能已经没法看了,唯一的好处就是开发的架子都已经搭好,开发速度快很多

因为最近正在为一个项目选型发愁,所以就测了一下,记录在此吧。

PS: 2014-6-23 使用 centos6 64位 重新进行了测试,得出与生产环境更匹配的结果,并修改了文章。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


手机版|北南南北论坛  

GMT+8, 2018-1-24 07:45 , Processed in 0.074597 second(s), 31 queries .

© 2001-2016 VxWorks6 Inc.

快速回复 返回顶部 返回列表