请选择 进入手机版 | 继续访问电脑版
  • 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

google-app-engine - GAE Golang - urlfetch 超时?

[复制链接]
菜鸟教程小白 发表于 2022-8-16 06:38:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在 Go 中的 Google App Engine 上遇到 urlfetch 超时的问题。该应用程序似乎不希望超过大约 5 秒的超时时间(它会忽略更长的超时时间并在其自己的时间之后超时)。

我的代码是:

var TimeoutDuration time.Duration = time.Second*30

func Call(c appengine.Context, address string, allowInvalidServerCertificate bool, method string, id interface{}, params []interface{})(map[string]interface{}, error){
    data, err := json.Marshal(map[string]interface{}{
        "method": method,
        "id":     id,
        "params": params,
    })
    if err != nil {
        return nil, err
    }

    req, err:=http.NewRequest("OST", address, strings.NewReader(string(data)))
    if err!=nil{
        return nil, err
    }

    tr := &urlfetch.Transport{Context: c, Deadline: TimeoutDuration, AllowInvalidServerCertificate: allowInvalidServerCertificate}

    resp, err:=tr.RoundTrip(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, err
    }
    result := make(map[string]interface{})
    err = json.Unmarshal(body, &result)
    if err != nil {
        return nil, err
    }
    return result, nil
}

无论我如何设置 TimeoutDuration到,应用程序在大约 5 秒后超时。如何防止它这样做?我在我的代码中犯了一些错误吗?



Best Answer-推荐答案


您需要像这样传递持续时间(否则将默认为 5 秒超时):

tr := &urlfetch.Transport{Context: c, Deadline: time.Duration(30) * time.Second}

2016 年 1 月 2 日更新:

使用新的 GAE golang 包 ( google.golang.org/appengine/* ),情况发生了变化。 urlfetch不再在传输中接收截止时间持续时间。

您现在应该通过新的上下文包设置超时。例如,这是您设置 1 分钟截止时间的方式:
func someFunc(ctx context.Context) {
    ctx_with_deadline, _ := context.WithTimeout(ctx, 1*time.Minute)
    client := &http.Client{
        Transport: &oauth2.Transport{
            Base:   &urlfetch.Transport{Context: ctx_with_deadline},
        },
    }

关于google-app-engine - GAE Golang - urlfetch 超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317472/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap