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

被 golang http 标准库蹂躏过的童鞋看过来

  •  
  •   guonaihong · 32 天前 · 2393 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。

    苦逼的岁月

    还记得以前晚上接到紧急需求,说要快速搞定。打开 vim 带上标准库,调试 http client multipart/form-data 格式 ,时间一分分过去,眼睛看代码越来越模糊,踩过至少 3 个坑。ok,啪!终于大功告成,这时候没人注意到你的傻笑,同事们都下班了。按下屏幕,走出大楼,背起书包,骑着小单车,听着外面的蝉叫声,拖着疲惫的身体回去睡觉。
    

    再遇一次可以更快

    为了避免再遇到这种苦逼的事情。从开发效率出发,优化 http client 调用方式。这就是下面的项目。

    https://github.com/guonaihong/gout

    13 回复  |  直到 2019-08-22 21:39:23 +08:00
        1
    misaka19000   32 天前
    g.Get(url) 不是挺好的,为什么还要加个 .Do()
        2
    guonaihong   32 天前
    @misaka19000 为了设计成链式调用。
        3
    hhyvs111   32 天前
    想问一下 go 原生的 http 有时候会返回 EOF 错误,这个是什么原因呢?
        4
    alexkkaa   32 天前 via Android
    @hhyvs111 运营商阻断
        5
    Akkuman   32 天前
    感觉标准库都写出肌肉记忆了哈哈,用习惯了也还好,自己也踩过一些坑
        6
    hopingtop   32 天前   ♥ 1
    再加入一些默认 http client 连接控制设置,重试等。 简单的 client 复用,会不会更美丽?
    https://github.com/huzhongqing/httplib
        7
    guonaihong   32 天前
    @hhyvs111 http 下面的 tcp 链接被关闭,会报这个错误。可以用代码模拟的。
        8
    guonaihong   32 天前
    @Akkuman 厉害厉害。
        9
    guonaihong   32 天前
    @hopingtop 可以可以,兄弟还有别的需求吗?我后面加上。
        10
    hhyvs111   32 天前
    @guonaihong 什么情况下会被关闭呢?
        11
    guonaihong   32 天前
    @hhyvs111 对端异常终止(构造一个访问超级慢的 http client, 这时候把客户端 ctrl+c,这时候服务端就会收到 eof,反过来操作也行),或者 client 和 server 之间的通信节点有问题。
        12
    hhyvs111   32 天前
    @guonaihong 我在想为什么 go 的 http 库没有及时得知这个连接被关闭了?
        13
    guonaihong   32 天前
    @hhyvs111 这和调用方式,如果要做成通知形式,事件触发只能放到网络层,语言只能设计成 callback 的形式。比如 nodejs 这种。go 是同步写法,只在用户在调用 read 之类的函数才和网络层交互,这时候才可以收到错误。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2354 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 15:24 · PVG 23:24 · LAX 08:24 · JFK 11:24
    ♥ Do have faith in what you're doing.