【问题标题】:Golang, changing structs of custom clients MaxIdleConnsPerHostGolang,更改自定义客户端 MaxIdleConnsPerHost 的结构
【发布时间】:2016-05-22 21:10:41
【问题描述】:

我想设置一个自定义的 http 客户端来同时获取多个 http 请求。 但是,我对 Golang 比较陌生,并且在更改客户端的结构和我想做的事情的可行性方面遇到了问题。

我想用我创建的那个来改变 s 的 Transport。

我的脚本的简化版本是:

package main

import (
    "fmt"
    "os"
    "github.com/njasm/gosoundcloud"
)

func main() {
    s, err := gosoundcloud.NewSoundcloudApi("client_id", "client_secret", nil)
    if err != nil {
        panic(err)
    }

   if err = s.PasswordCredentialsToken("user@mail.com", "password"); err!= nil {
    fmt.Println(err)
    os.Exit(1)
    }

    var userID uint64 = 1
    Transport, ok := http.DefaultTransport.(*http.Transport)
    if !ok {
        fmt.Println("http.DefaultClient is not an http.Client")
        os.Exit(1)
    }
    Transport.MaxIdleConnsPerHost = 250
    //Here I would like to change s'Transport so that it handles 250 MaxIdleConns
    member, err := s.GetUser(userID)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    fmt.Println(member)
}

这里是 s 的结构体

type SoundcloudApi struct {
conf       *oauth2.Config
httpClient *http.Client
response   *http.Response
}

参考资料:

https://golang.org/pkg/net/http/#Client https://godoc.org/github.com/njasm/gosoundcloud#SoundcloudApi

【问题讨论】:

  • 我会说这是一个功能请求,这里的任何答案都是纯粹的 hack。你应该提交issue

标签: go struct switch-statement client


【解决方案1】:

怎么样:

tr := &http.Transport{DisableKeepAlives: false, MaxIdleConnsPerHost:250} 
client := &http.Client{Transport: tr}

client 分配给SoundcloudApi.httpClient

【讨论】:

  • 我认为这不仅仅是运输方面的变化
【解决方案2】:

我是 gosoundcloud 的创建者..

首先感谢您使用该库。

其次,正如@OneOfOne 所指出的,我也相信这里对您的需求的任何回答都将是一种解决方法,我们可能可以通过功能请求来解决。

因此,我邀请您提交issue 以进一步讨论该问题。

我会更乐意帮忙的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    相关资源
    最近更新 更多