传说中1200k的python微框架japronto
2017-04-24 本文已影响3115人
cctse
只因瞄到http://developer.51cto.com/art/201704/537960.htm这篇文章
也不知道哪里来的120万,也没有好几倍那么夸张。
英文原文在这里https://medium.com/@squeaky_pl/million-requests-per-second-with-python-95c137af319
只是个毫无意义的hello world benchmark
对比对象是go的标准库与fasthttp,竟然超出那么多,不科学
环境
Mac mini (Late 2014)
处理器: 2.6 GHz Intel Core i5
内存: 8 GB 1600 MHz DDR3
go version: go1.8 darwin/amd64
python version: 3.6
japronto version: 0.1.1 https://github.com/squeaky-pl/japronto
fasthttp version: 最新 https://github.com/valyala/fasthttp
工具
hey https://github.com/rakyll/hey
go stdlib
package main
import (
"net/http"
)
func say(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello world"))
}
func main() {
http.HandleFunc(`/`, say)
http.ListenAndServe(":8082", nil)
}
go fasthttp
package main
import (
fst "github.com/valyala/fasthttp"
"fmt"
)
func Handler(c *fst.RequestCtx) {
c.Write([]byte("hello world"))
}
func main() {
var port = ":8081"
fmt.Println("serv on", port)
fst.ListenAndServe(port, Handler)
}
python japronto
from japronto import Application
def hello(req):
return req.Response(text='hello world')
app = Application()
app.router.add_route('/', hello)
app.run(debug=False)
测试结果
hellobench.png虽然只是简单的hello world测试,但是还是可以看出japronto的io处理还是极具效率的,只是以其目前的生态还难以投入生产,等其周边配套齐全后,应该是个非常不错的框架。
绝大多数环境下的服务器瓶颈都在于io,所以python的慢根本微不足道。而其简洁快速的开发与强大的胶水能力才是其杀手锏。
当然其部署也是个短板,永远没有go来得方便