Пакет Gorequest: проверьте специально для тайм-аута
Я использую приведенный ниже пакет для отправки исходящего http-запроса https://github.com/parnurzeal/gorequest
Например, я делаю запрос GET, как показано ниже res, body, errs = goReq.Get(url).End()
Мой вопрос, как выяснить, есть ли время ожидания в запросе.
1 ответ
Решение
Поскольку метод Timeout устанавливает сделки для набора, чтения и записи, вы можете использовать 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")
}
}
}