Golang,更改自定义客户端MaxIdleConnsPerHost的结构

时间:2016-05-22 21:10:42

标签: go struct switch-statement client

我想设置自定义http客户端以同时获取多个http请求。 但是,我对Golang来说相对较新,我面临着改变客户结构和我想要做的可行性的问题。

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

我的脚本的简化版本是:

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

2 个答案:

答案 0 :(得分:1)

怎么样:

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

clientSoundcloudApi.httpClient

答案 1 :(得分:1)

我是gosoundcloud的创造者..

首先感谢您使用该库。

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

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

我会更乐意帮忙。