登录
首页 >  Golang >  Go问答

取消错误下的接送服务

来源:stackoverflow

时间:2024-02-11 16:15:19 116浏览 收藏

golang学习网今天将给大家带来《取消错误下的接送服务》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我在客户端进行了往返,并设置了重试1次。问题是有时我的客户端触发“上下文取消”,整个处理似乎在 300 毫秒内结束,但我没有设置超时。它是如何触发的?

func RoundTrip(req *http.Request)(res *http.Response, err error){
    for i:=0; i<1; i++ {
        transport = http.DefaultTransport
        res, err = transport.RoundTrip(req)
        if err == nil {
             break;
        }
    }
    
    return 
}

正确答案


您可以使用 Request.WithContext 方法或 NewRequestWithContext 函数将上下文添加到请求中。当您取消上下文时,它应该传播到处理请求的所有函数。

更新

抱歉,我以为您想取消请求,而不是询问原因。无论如何,鉴于您对此答案的评论:

300ms 相当短。如果更长,我建议调整 net.DefaultTransport 中的计时器;然而,我猜测底层 TCP 连接被拒绝/限制并导致 RoundTrip 失败。 TCP 限制可能是内部的(DNS 查找错误等)或服务器端的。您需要进一步确定问题范围才能进行调试。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>