如图:
仅从楼主截图中的报错信息看,http.Client
设置的 Timeount
超时。
该 Timeount
在发起一个 http
请求前设置一个定时器,在请求返回时关闭定时器。
假设对应的服务端确实是正常工作,只是耗费的时间较久,可以考虑延长超时时间或设置成没有超时。
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
// 不使用默认的 http.Get,手动设置 client 的 Timeout
// Timeout 默认值为0,表示不设置超时
client := &http.Client{Timeout: 5 * time.Second}
// 一个 http.Client 实质上相当于一个 tcp 连接池
// 所以建议是复用 client
// 多个并发请求的 Timeout 是分别自动设置的,互相不影响
go func() {
url1 := ""
resp, err := client.Get(url1)
fmt.Println(resp, err)
}()
go func() {
url2 := ""
resp, err := client.Get(url2)
fmt.Println(resp, err)
}()
// 默认的 http.Get,实际使用了 DefaultClient = &Client{},没有设置 Timeout
resp, err := http.Get("")
fmt.Println(resp, err)
}
15 回答8.4k 阅读
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
设置timeout
看情况禁用keep-alived