python主流web框架性能测评 django/flask/bottle/tornado

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

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

测试软件为 siege,测试os为cenos6 64位,测试命令为:

siege -c 100 -r 100 -b http://127.0.0.1:5000/

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就不说了,性能已经没法看了,唯一的好处就是开发的架子都已经搭好,开发速度快很多

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

时间: 2024-08-02 18:38:36

python主流web框架性能测评 django/flask/bottle/tornado的相关文章

python 实现web框架simfish

本文主要记录本人利用python实现web框架simfish的过程.源码github地址:simfish WSGI HTTP Server wsgi模块提供了简单的simple_server, wsgiref.simple_server.make_server(host, port, app, server_class=WSGIServer, handler_class=WSGIRequestHandler) 官方提供的例子, from wsgiref.simple_server import

python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)_python

测了一下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

Python 的 web 框架 Flask 搭建静态博客教程

现在流行的静态博客/网站生成工具有很多,比如 Jekyll, Pelican, Middleman, Hyde 等等,StaticGen 列出了目前最流行的一些静态网站生成工具. 我们的内部工具由 Python/Flask/MongoDB 搭建,现在需要加上文档功能,写作格式是 Markdown,不想把文档放到数据库里,也不想再弄一套静态博客工具来管理文档,于是找到了 Flask-FlatPages 这个好用的 Flask 模块.熟悉 Flask 的同学花几分钟的时间就可以用搭建一个简单博客,加

在python的WEB框架Flask中使用多个配置文件的解决方法_python

有些框架本身就支持多配置文件,例如Ruby On Rails,nodejs下的expressjs.python下的Flask虽然本身支持配置文件管理, 但单纯使用from_object和from_envvar却不是那么方便.有没有更好的办法? 答案是Flask-Environments这个包.它能通过FLASK_ENV环境变量自动选择开发环境配置或生产环境配置.使用之前要先安装: 复制代码 代码如下: $ sudo pip install Flask-Environments 然后修改confi

测试Flask+PYTHON的WEB框架

  参数URL: http://blog.csdn.net/qwiwuqo/article/details/8970621   安装flask之前,你必须要先安装python和easy_install. 安装 virtualenv,这个主要是用来做解释器环境隔离的,避免同一机器上的多个python或者多个python的库依赖. 然后cd到myvir目录的Scripts下输入activate.bat,就进入了虚拟环境了,然后输入easy_install Flask.

python-Python的web框架flask中如何使用scrapy

问题描述 Python的web框架flask中如何使用scrapy 用scrapy做了一个单机爬虫.如果要发布的话则需要搞一个web框架,选择了flask但不知道如何使用,谷歌好久也没找到相关博客,希望有大神解答 解决方案 Python轻量Web框架Flask使用Python明星web框架Flask 解决方案二: http://arachne.readthedocs.io/en/latest/ 解决方案三: http://www.shenjianshou.cn/ 解决方案四: http://do

Python Web框架Pylons中使用MongoDB的例子

 这篇文章主要介绍了Python Web框架Pylons中使用MongoDB 的例子,大家参考使用 Pylons 经过漫长的开发,终于放出了 1.0 版本.对于正规的产品开发来说,1.0 版本的意义很大,这表明 Pylons 的 API 终于稳定下来了.   Pylons 虽是山寨 Rails 而生,但作为一个纯 Python 的 Web 框架,它有一个鲜明的特点:可定制性强.框架每一层都没重新发明轮子,而是尽量整合现有的 Python 库.在 MVC 的 Model 层,Pylons 默认支持

简单而直接的Python web 框架:web.py

来源:https://www.oschina.net/question/5189_4306 web.py 是一个Python 的web 框架,它简单而且功能强大.web.py 是公开的,无论用于什么用途都是没有限制的. 先让大家感受一下web.py 的简单而强大: import web urls = ( '/(.*)', 'hello' ) class hello: def GET(self, name): i = web.input(times=1) if not name: name = '

Python Web框架Pylons中使用MongoDB的例子_python

Pylons 经过漫长的开发,终于放出了 1.0 版本.对于正规的产品开发来说,1.0 版本的意义很大,这表明 Pylons 的 API 终于稳定下来了. Pylons 虽是山寨 Rails 而生,但作为一个纯 Python 的 Web 框架,它有一个鲜明的特点:可定制性强.框架每一层都没重新发明轮子,而是尽量整合现有的 Python 库.在 MVC 的 Model 层,Pylons 默认支持 SQLAlchemy.现在 NoSQL 很火 MongoDB 很热.在 Pylons 中应用 Mong