登录
首页 >  Golang >  Go问答

gorequest包:用于超时检测

来源:stackoverflow

时间:2024-03-24 15:45:33 296浏览 收藏

本文介绍了如何使用gorequest包检测HTTP请求超时。该包提供了一种设置拨号、读取和写入截止时间的方法,使得开发者可以判断请求是否在指定时间内完成。此外,文章还提供了示例代码,展示了如何使用os.IsTimeout()方法来检查错误类型是否为超时。

问题内容

我正在使用下面的包来发出出站 http 请求 https://github.com/parnurzeal/gorequest

例如,我正在发出如下所示的 GET 请求 res, body, errs = goReq.Get(url).End()

我的问题是如何判断请求是否超时。


解决方案


由于超时方法 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")
        }
    }
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>