性能测试: flask WSGI vs 异步 ASGI vs tornodo vs Golang Gin

做一个基本的性能基准测试。测试脚本使用是apach benchmark
测试命令:
ab -kc 1000 -n 4000 http://127.0.0.1:5000/
 

代码最精简:
flask wsgi:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello, World!'

if __name__ == '__main__':
app.run(host='0.0.0.0')

得到的结果:
 

ASGI的代码:
async def app(scope, receive, send):
await send({
'type': 'http.response.start',
'status': 200,
'headers': [
[b'content-type', b'text/html']
]
})

await send({
'type': 'http.response.body',
'body': b'Hello This is server running',
'more_body': False
})
 
运行命令:
uvicorn --host 0.0.0.0 simple_asgi:app
 
得到的结果:

 
 
python的tornado
from tornado import  ioloop
from tornado import web
class Homepage(web.RequestHandler):

def get(self):
print('get method')
self.write("This is tornado server")

if __name__ == '__main__':
app = web.Application([
("/",Homepage),

])

app.listen(8888)
ioloop.IOLoop.current().start()

 
 
Goland的gin
 package main

import "github.com/gin-gonic/gin"

// 测试专用

func main() {
r := gin.Default()
r.GET("/index", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Working"})
})
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Working"})
})
r.Run()
}


 
通过requests per second 每秒的请求数:
flask : 1000
uvicorn: 2000
tornoda:3000
go gin:4000

 
所以综合测试结果,flask的性能最烂,go gin的性能最好。差了4倍。
 
转载请注明出处:
http://www.30daydo.com/article/44336
 

0 个评论

要回复文章请先登录注册