2016-08-28 3 views
1

Учитывая, что я хочу использовать другой прокси-сервер для каждого запроса я сделал следующее:HTTP Proxy Транспорт функция

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 
}}} 

Если я 10 запросов GET, используя вышеупомянутый клиент Called получает распечатанный один раз, она не должно быть распечатывается с каждым запросом?

Мне кажется, что результат первого вызова этой функции кэшируется и называется только один раз, но я могу ошибаться, любые идеи?

ответ

2

От net/http package documentation:

По умолчанию Транспорт кэширует соединения для повторного использования в будущем. При доступе к множеству хостов это может оставить много открытых подключений. Это поведение можно управлять с помощью метода CloseIdleConnections транспорта и полей MaxIdleConnsPerHost и DisableKeepAlives.

Транспорты следует использовать повторно, а не создавать при необходимости. Транспортировка безопасна для одновременного использования несколькими гортанами.

+0

Большое спасибо, DisableKeepAlives было достаточно – Bread