2016-05-22 4 views
0

Ich möchte einen benutzerdefinierten HTTP-Client festlegen, um mehrere http-Anforderungen gleichzeitig abzurufen. Allerdings bin ich relativ neu Golang und ich habe Probleme mit der Struktur der Clients und der Machbarkeit von was ich tun möchte.Golang, Ändern von Strukturen von benutzerdefinierten Clients MaxIdleConnsPerHost

Ich möchte den Transport von s mit dem einen, den ich erstellt habe, ändern.

Eine vereinfachte Version von meinem Skript ist:

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("[email protected]", "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) 
} 

Hier sind die Strukturen für s

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

Referenzen:

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

+1

Ich würde sagen, das ist eine Feature-Anfrage, jede Antwort hier wäre ein reiner Hack. Sie sollten ein [Problem] (https://github.com/njasm/gosoundcloud/issues) einreichen. – OneOfOne

Antwort

1

Wie wäre:

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

Und assing client-SoundcloudApi.httpClient

+0

Ich denke, das ändert sich viel mehr als nur der Transport – Juanvulcano

1

ich der Schöpfer des gosoundcloud bin ..

Erstmal Danke für die Bibliothek.

Zweitens, wie @OneOfOne darauf hingewiesen, ich auch glaube, dass jede Antwort auf Ihre Bedürfnisse hier eine Problemumgehung sein wird, die wir wahrscheinlich mit einer Feature-Anfrage beheben können.

So, ich lade Sie ein issue Datei, um das Problem weiter zu diskutieren.

Ich werde mehr als froh sein, zu helfen.