Python flask 与 GO WEB服务器性能对比
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python flask 与 GO WEB服务器性能对比,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2964字,纯文字阅读大概需要5分钟。
内容图文
![Python flask 与 GO WEB服务器性能对比](/upload/InfoBanner/zyjiaocheng/713/95334b18189a4e7a833189fd66867759.jpg)
测试环境:
- 系统: CentOS 7.1
- Mem: 8G
- CPU: 虚拟机16核
- Python版本: python3.6
- Flask版本: 0.12.2
- Golang版本: 1.6.3
1.首先写一个Flask的web程序,只返回一个 Hello word!
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello word!'
if __name__ == '__main__':
app.run()
2.写一个go语言的web程序,也返回一个 Hello word!
package main
import (
f "fmt"
"log"
"net/http"
)
func sayhelloName(w http.ResponseWriter, r *http.Request) {
f.Fprintln(w, "hello world!")
}
func main() {
http.HandleFunc("/", sayhelloName)
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe:", err)
}
}
3.直接在控制台启动Flask, 用压力测试工具模拟并发请求。这里模拟100个并发100000个请求。
ab -n 100000 -c 100 "http://172.30.200.88:5000/"
Server Software: Werkzeug/0.12.2
Server Hostname: 172.30.200.88
Server Port: 5000
Document Path: /
Document Length: 11 bytes
Concurrency Level: 100
Time taken for tests: 88.441 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 16500000 bytes
HTML transferred: 1100000 bytes
Requests per second: 1130.70 [#/sec] (mean)
Time per request: 88.441 [ms] (mean)
Time per request: 0.884 [ms] (mean, across all concurrent requests)
Transfer rate: 182.19 [Kbytes/sec] received
4.用Gunicorn以8个进程启动flask,再以同样的并发测试一遍
Server Software: gunicorn/19.7.1
Server Hostname: 172.30.200.88
Server Port: 8080
Document Path: /
Document Length: 11 bytes
Concurrency Level: 100
Time taken for tests: 15.842 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 17100000 bytes
HTML transferred: 1100000 bytes
Requests per second: 6312.50 [#/sec] (mean)
Time per request: 15.842 [ms] (mean)
Time per request: 0.158 [ms] (mean, across all concurrent requests)
Transfer rate: 1054.14 [Kbytes/sec] received
5.以同样的并发测试Go
Server Software:
Server Hostname: 172.30.200.88
Server Port: 8080
Document Path: /
Document Length: 13 bytes
Concurrency Level: 100
Time taken for tests: 12.460 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 13000000 bytes
HTML transferred: 1300000 bytes
Requests per second: 8025.80 [#/sec] (mean)
Time per request: 12.460 [ms] (mean)
Time per request: 0.125 [ms] (mean, across all concurrent requests)
Transfer rate: 1018.90 [Kbytes/sec] received
测试结果:
Flask 总耗时 88.441秒,平均每秒处理1130个请求
Gunicorn多进程时耗时 15.842, 平均每秒处理 6312个请求
Go 总耗时 12.46秒,每秒处理 8025个请求
相比之下 go跟gunicorn的处理速度有提升,但是并没有像传说中十倍的性能。在测试中还发现,在用flask的时候并不能支持大并发,当并发在200以上就很容易报错了, 而Golang的并发到1000都能正常运行,这一点上差距比较大。
内容总结
以上是互联网集市为您收集整理的Python flask 与 GO WEB服务器性能对比全部内容,希望文章能够帮你解决Python flask 与 GO WEB服务器性能对比所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。