V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guonaihong
V2EX  ›  程序员

重新燃烧小宇宙,g out v0.0.9 版本发布

  •  
  •   guonaihong ·
    guonaihong · 2020-02-26 09:28:59 +08:00 · 2089 次点击
    这是一个创建于 1493 天前的主题,其中的信息可能已经有所发展或是发生改变。

    gout 简介

    gout 是 http 请求库,如果找一个熟悉的事物来类比,那就是追求成为瑞士军刀这样一个超级作品,收藏过瑞士军刀的朋友都知道,它有很多小的部件,很难想像它小巧的身体下面集齐力那么多的工具。有了它能解决生活中很多棘手的问题。向如此有工匠精神的物件致敬。希望有一天 gout 也能让大家由哀地发出这样的想法。当然作者要做的就是时间为朋友,不停地在现有基础上优化,新的版本比上个版本有所进步。

    构架图

    gout-ad.png

    项目地址

    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)
        }
    }
    
    • output
    =================== 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

    10 条回复    2020-02-26 18:51:25 +08:00
    lwldcr
        1
    lwldcr  
       2020-02-26 09:40:10 +08:00
    star 了 等有时间学习一下
    lyhiving
        2
    lyhiving  
       2020-02-26 09:40:10 +08:00
    并发有有没有?堵塞重试有没有?
    没有的话我迟点再问
    guonaihong
        3
    guonaihong  
    OP
       2020-02-26 09:44:00 +08:00
    @lyhiving 有基于 backoff 的重试功能。
    krixaar
        4
    krixaar  
       2020-02-26 09:44:30 +08:00
    项目名字有点痛……
    guonaihong
        5
    guonaihong  
    OP
       2020-02-26 09:52:10 +08:00
    @krixaar 哈哈,为了避免影响已经用的童鞋,名字就这样了。
    imnaive
        6
    imnaive  
       2020-02-26 10:49:15 +08:00
    收藏了,可能用得到
    Allianzcortex
        7
    Allianzcortex  
       2020-02-26 11:23:08 +08:00 via iPhone
    看到 gout.H 笑了下,受 gin 影响太深了吧
    guonaihong
        8
    guonaihong  
    OP
       2020-02-26 11:50:19 +08:00
    @Allianzcortex 早前时候给 gin 提过几个 pr,影响了我那段时间的 API 设计。不过 gout.H 可以少敲字符,挺好 就保留下来了。
    wsseo
        9
    wsseo  
       2020-02-26 12:04:53 +08:00
    楼主在开源中国搬砖吗?
    guonaihong
        10
    guonaihong  
    OP
       2020-02-26 18:51:25 +08:00
    @wsseo 没懂“搬砖”,是指代码仓库吗?我在 github.comgitee.com 都有账号。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5308 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:09 · PVG 17:09 · LAX 02:09 · JFK 05:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.