美文网首页
golang 设置http超时时间

golang 设置http超时时间

作者: 東玖零 | 来源:发表于2022-05-06 14:16 被阅读0次

    背景:我使用的框架是beego,网络请求用的是Go自带的net/http,没有设置过超时时间,app的首页列表请求了15个接口,有一天其中一个接口请求了三方服务挂了,导致整个列表全凉了。

    期望:其中5个主要接口成功就能显示列表,主流程能跑得通。

    分析:可是客户端是同时发15个接口等全部返回后一起解析,如果拆分5个接口成功渲染一次列表,另外10个成功一次渲染一次列表,方案可行,但体验很差,多年的业务逻辑代码拆起来也容易出错,可以说是代价比较大,那么就在接口上处理,请求其他服务出错时返回正常状态码和空数组,不就可以了嘛?

    看一眼接口代码,也是按上面分析处理的,那为什么还是导致全凉呢?

    后来发现真正的原因是网关超时了,客户端的代码执行了网络请求失败的逻辑,那么我们就需要在服务器接口上加超时设置,超时返回正常状态码和空数组并打印日志。

    搬个砖原出处,设置超时代码如下:

    client := http.Client{ Timeout: 30*time.Second }
    resp, err := client.Get(reqUrl)
    
    截屏2022-05-06 下午2.15.28.png

    相关文章

      网友评论

          本文标题:golang 设置http超时时间

          本文链接:https://www.haomeiwen.com/subject/yktzyrtx.html