python web框架性能对比_Go 和 Python Web 服务器性能对比

我通常使用 Python 来构建 Web 应用。一年前,在兴趣的驱使下,我开始学习 Go。 在此期间,我重写了一些原本由 C 开发的 CGI 应用,包括运行于 chroot 环境下的同 thttpd 服务器一起的应用。我开始寻找可以开发易于 chroot、且内置 Web 服务器的独立 Web 应用的工具。那时,我开始玩 web.go 框架、mustache.go 模板、Go 原生 http 包和 GoMySQL 数据库 API。我发现,有 http、mustache.go GoMySQL 包的 Go 可以是我用来工作的不错的工具组合。因此,我决定使用 Go 编写我的应用。

在工作过程中发现,我需要比 mustache.go 更加灵活,比 GoMySQL 更加成熟、没有那么多 Bug 的东西。最终,我使用 Kasia.go 模板和 MyMySQL (为我的应用定制开发的包,不过我将其贡献给了 Go 社区)。重写的应用即便是在比以前的负载更高的运营环境下,也工作得很好。我开始思考这个问题:用 Go 实现独立 Web 应用比 Python 到底快了(或者是慢了)多少。我决定做一些各种框架和服务器不同的用途的测试。为了比较,我选择了下面的 Go 包:

原始的 Go http包;

web.go 框架(它使用运行于独立模式[standalone mode] 的 http 包);

twister 框架 (它同样使用 http 包)。

和下面的 Python Web服务器/框架:

使用 CherryPy WSGI 服务器的web.py 框架;

使用 flup FastCGI 做 nginx 服务器的后台处理的 web.py 框架;

tornado 异步服务器/框架;

nginx 做负载均衡的 tornado。

每一个用例,我都编写了一个小应用,略微复杂一些的、传统的 Hello World 例子。任何应用都包括:

使用正则表达式通过 URL 路径传递参数;

使用语句创建多行输出;

使用 printf 形式的格式化函数/表达式格式化输出。

我想,这些都是在 Web 应用中常见的操作,所以应当包含在任何简易的性能对比测试中。所有测试应用的代码在下面的链接中:

测试环境

测试环境包括两台 使用千兆以太网链接的PC (请求发起者和应用服务器)。

请求发起者:2 x Xeon 2.6 GHz with hyperthreading, Debian SID, kernel: 2.6.33.7.2-rt30-1-686 #1 SMP PREEMPT RT;

服务器: MSI Netbook with two core Intel U4100 1.30GHz, AC power connected, 64-bit Ubuntu 10.10, kernel: 2.6.35-25-generic #44-Ubuntu SMP, Python 2.6.6-2ubuntu2, web.py 0.34-2, flup 1.0.2-1, tornado 0.2-1, nginx 0.7.67-3ubuntu1;

为了产生 HTTP 请求并且评估测试应用的性能,我使用 siege 性能测试工具。Siege 可以用多线程模拟多个用户。我使用了下面的命令产生请求:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值