传说中1200k的python微框架japronto

cc 发布于2017年04月24日 ∣ 约528字 · 需2分钟 阅读()

只因瞄到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,竟然超出那么多,不科学

环境

1Mac mini (Late 2014)
2处理器: 2.6 GHz Intel Core i5
3内存: 8 GB 1600 MHz DDR3
4
5go version: go1.8 darwin/amd64
6python version: 3.6
7japronto version: 0.1.1  https://github.com/squeaky-pl/japronto
8fasthttp version: 最新  https://github.com/valyala/fasthttp

工具 hey https://github.com/rakyll/hey

go stdlib

 1package main
 2
 3import (
 4	"net/http"
 5)
 6
 7func say(w http.ResponseWriter, r *http.Request) {
 8	w.Write([]byte("hello world"))
 9}
10
11func main() {
12	http.HandleFunc(`/`, say)
13	http.ListenAndServe(":8082", nil)
14}

go fasthttp

 1package main
 2
 3import (
 4	fst "github.com/valyala/fasthttp"
 5	"fmt"
 6)
 7
 8func Handler(c *fst.RequestCtx) {
 9	c.Write([]byte("hello world"))
10}
11
12func main() {
13	var port = ":8081"
14	fmt.Println("serv on", port)
15	fst.ListenAndServe(port, Handler)
16}

python japronto

 1from japronto import Application
 2
 3
 4def hello(req):
 5    return req.Response(text='hello world')
 6
 7
 8app = Application()
 9app.router.add_route('/', hello)
10app.run(debug=False)

测试结果

hellobench.png

虽然只是简单的hello world测试,但是还是可以看出japronto的io处理还是极具效率的,只是以其目前的生态还难以投入生产,等其周边配套齐全后,应该是个非常不错的框架。

绝大多数环境下的服务器瓶颈都在于io,所以python的慢根本微不足道。而其简洁快速的开发与强大的胶水能力才是其杀手锏。

当然其部署也是个短板,永远没有go来得方便