我试图使用超时的上下文来退出长时间运行的 http GET 请求。对 url 的请求应该超过 10 秒,但我的请求在 2 秒后没有超时。问题是什么?传递给 makeGet() 函数的 ctx 来自 http handlefun r.Contex()。
makeGet(ctx context.Context, url string, respBuffer *bytes.Buffer) (int, error){
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return 0, err
}
//
ctx, cancel := context.WithTimeout(ctx, time.Second*2)
defer cancel()
req.WithContext(ctx)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return 0, err
}
defer resp.Body.Close()
_, err = respBuffer.ReadFrom(resp.Body)
if err != nil {
return resp.StatusCode, err
}
}
MMMHUHU
富国沪深
随时随地看视频慕课网APP
相关分类