gout 是 http 请求库,如果找一个熟悉的事物来类比,那就是追求成为瑞士军刀这样一个超级作品,收藏过瑞士军刀的朋友都知道,它有很多小的部件,很难想像它小巧的身体下面集齐力那么多的工具。有了它能解决生活中很多棘手的问题。向如此有工匠精神的物件致敬。希望有一天 gout 也能让大家由哀地发出这样的想法。当然作者要做的就是时间为朋友,不停地在现有基础上优化,新的版本比上个版本有所进步。
https://github.com/guonaihong/gout
输出 API 各个阶段耗时 Dns---> tcp connect ---> send request ---> wait result ---> read result,可以很方便论断性能
gout.Trace()可输出 http 各个阶段的耗时,比如 dns lookup 时间,tcp 连接时间等等。可以很方便的做些性能调优。
package main
import (
"fmt"
"github.com/guonaihong/gout"
)
func openDebugTrace() {
err := gout.POST(":8080/colorjson").
Debug(gout.Trace()).
SetJSON(gout.H{"str": "foo",
"num": 100,
"bool": false,
"null": nil,
"array": gout.A{"foo", "bar", "baz"},
"obj": gout.H{"a": 1, "b": 2},
}).Do()
if err != nil {
fmt.Printf("err = %v\n", err)
}
}
=================== Trace Info(S): ===================
DnsDuration : 0s
ConnDuration : 868.623µs
TLSDuration : 0s
RequestDuration : 376.712µs
WaitResponeDuration : 717.008µs
ResponseDuration : 76.158µs
TotalDuration : 2.13921ms
=================== Trace Info(E): ===================
欢迎试用,如有建议,欢迎提issue
1
lwldcr 2020-02-26 09:40:10 +08:00
star 了 等有时间学习一下
|
2
lyhiving 2020-02-26 09:40:10 +08:00
并发有有没有?堵塞重试有没有?
没有的话我迟点再问 |
3
guonaihong OP @lyhiving 有基于 backoff 的重试功能。
|
4
krixaar 2020-02-26 09:44:30 +08:00
项目名字有点痛……
|
5
guonaihong OP @krixaar 哈哈,为了避免影响已经用的童鞋,名字就这样了。
|
6
imnaive 2020-02-26 10:49:15 +08:00
收藏了,可能用得到
|
7
Allianzcortex 2020-02-26 11:23:08 +08:00 via iPhone
看到 gout.H 笑了下,受 gin 影响太深了吧
|
8
guonaihong OP @Allianzcortex 早前时候给 gin 提过几个 pr,影响了我那段时间的 API 设计。不过 gout.H 可以少敲字符,挺好 就保留下来了。
|
9
wsseo 2020-02-26 12:04:53 +08:00
楼主在开源中国搬砖吗?
|
10
guonaihong OP |