2016-08-28 15 views
1

私はリクエストごとに異なるプロキシを使用したい私は、以下のなかったことを考える:HTTPトランスポート・プロキシ機能

var proxies chan *url.URL 

var anonymousClient = &http.Client{Transport: &http.Transport{Proxy: func(r *http.Request) (*url.URL, error) { 
    fmt.Println("Called") 
    p := <-proxies 
    proxies <- p 
    return p, nil 
}}} 

私はCalledが一度に印刷されます上記のクライアントを使用して10のGET要求を行う場合、それはすべきではありませんリクエストごとに印刷されますか?

その関数への最初の呼び出しの結果はキャッシュされ、その呼び出しは一度だけですが、私は間違っている可能性があります。 net/http package documentationから

答えて

2

デフォルトでは、交通は将来の再利用のための接続をキャッシュします。これにより、多くのホストにアクセスするときに多くのオープンな接続が残ることがあります。この動作は、TransportのCloseIdleConnectionsメソッドとMaxIdleConnsPerHostおよびDisableKeepAlivesフィールドを使用して管理できます。

トランスポートは、必要に応じて作成する代わりに再利用する必要があります。トランスポートは、複数のゴルーチンによって同時に使用するのに安全です。

+0

ありがとう、DisableKeepAlivesで十分でした – Bread

関連する問題