go循环发送http请求经常报错超时

lgy1027 · · 639 次点击 · · 开始浏览    
代码如下: ``` func NewHttping(method, protocol string, timeoutDuration time.Duration) *Httping { return &Httping{ Method: method, Protocol: protocol, Client: &http.Client{ Timeout: timeoutDuration, Transport: &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }, }, } } func (httping *Httping) Ping(t model.TargetIp) (float64, *http.Response, error) { var resp *http.Response var body io.Reader if httping.Method == "POST" { body = bytes.NewBufferString("{}") } req, err := http.NewRequest(httping.Method, fmt.Sprintf("%s://%s:%d", httping.Protocol, t.IP, t.Port), body) if t.Header != "" { head := map[string]interface{}{} err := json.Unmarshal([]byte(t.Header), &head) if err != nil { seelog.Error("[func:httping is err]", err.Error()) } for key, val := range head { req.Header.Add(key, val.(string)) } } if err != nil { return 0, nil, err } duration, errIfce := utils.TimeIt(func() interface{} { resp, err = httping.Client.Do(req) return err }) if errIfce != nil { err := errIfce.(error) return 0, nil, err } return duration, resp, nil } ``` 报错信息如下: ``` 2019-05-13/18:15:03 [Error] httping.go [func:HTTP StartPing ] www.youku.com - failed: Get http://www.youku.com:80: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ``` 我这边设置的超时时间是10s,程序以间隔2秒的时间差循环发送求情,但是经常报错超时,我想着youku不至于这样吧,麻烦大神帮我看看问题出在什么地方了吗

入群交流(该群和以上内容无关):Go中文网 QQ交流群:731990104 或 加微信入微信群:274768166 备注:入群; 公众号:Go语言中文网

639 次点击  
加入收藏 微博
6 回复  |  直到 2019-05-14 19:38:03
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传