| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
JustinaMuni
8年前发布

go http client 设置连接超时

   <p>go 语言的 http 客户端可以在初始化话的时候通过</p>    <pre>  <code class="language-go">client := http.Client{   Timeout: 5 * time.Second,  }</code></pre>    <p>来设置请求超时,即整个 http 请求到完成响应的时间限制。那么如果想另外设置 tcp 连接阶段的超时可以这样玩:</p>    <pre>  <code class="language-go">client := http.Client{   Transport: &http.Transport{    Proxy: http.ProxyFromEnvironment,    Dial: (&net.Dialer{     Timeout:   2  * time.Second,     Deadline:  time.Now().Add(3  * time.Second),     KeepAlive: 2 * time.Second,    }).Dial,    TLSHandshakeTimeout: 2 * time.Second,   },   Timeout: 5 * time.Second,  }</code></pre>    <p>通过设置 Transport 结构中的 Dial 的属性来实现。如上面的代码中,Dial 的 Timetout 是在 tcp 连接时设置的连接超时,Deadline 则会在超过这个时间后强制关闭连接,在连接无响应的时候回有用。KeepAlive 则会发起心跳,检测连接是否存活。此外,可以设置 TLSHandshakeTimeout 作为 https 握手的超时。具体可以参考 net.Dialer 的文档。由于直接构造了 Transport 结构,不会自动设置 Proxy 属性,这里还得再这里补上。可以用 http.ProxyFromEnvironment 表示根据环境变量来设置,即 http_proxy 和 https_proxy 两个变量设置的 http 代理。如果想强制不使用代理,可以设置为</p>    <pre>  <code class="language-go">...   Proxy: func(*http.Request) (*url.URL, error) {return nil, nil},  ...</code></pre>    <p> </p>    <p>来自: <a href="/misc/goto?guid=4959673633614034558" rel="nofollow">http://xiezhenye.com/2016/05/go-http-client-设置连接超时.html</a></p>    <p> </p>    
 本文由用户 JustinaMuni 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1464080880528.html
HTTP Google Go/Golang开发