我正在使用以下程序包发出出站http请求 https://github.com/parnurzeal/gorequest
例如,我正在发出如下的GET请求 res,body,errs = goReq.Get(url).End()
我的问题是如何确定请求中是否存在超时。
答案 0 :(得分:1)
由于超时方法sets the dealines for dial, read, and write,您可以使用os.IsTimeout(net和net / url程序包中的所有错误类型都实现Timeout() bool
)。 gorequest不支持上下文,因此不必考虑context.Canceled:
package main
import (
"log"
"net/http"
"net/http/httptest"
"time"
"github.com/parnurzeal/gorequest"
)
func main() {
s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
time.Sleep(time.Second)
}))
request := gorequest.New()
_, _, errs := request.Get(s.URL).Timeout(500 * time.Millisecond).End()
for _, err := range errs {
if os.IsTimeout(err) {
log.Fatal("timeout")
}
}
}