我有一个基于每个请求通过代理轮换的应用程序。
目前我有一些代码是:
func (mon *Monitor) MassUrlRetrieve(n int, url string) (respBytes []byte) {
funnel := make(chan []byte)
go ProductRetrieveTimeout(TIMEOUT_RETRIEVE_URL, funnel)
for i := 0; i < n; i++ {
go mon.WrapGetUrlToChannel(funnel, url)
}
return <- funnel
}
基本上发送多个请求并返回第一个请求以响应/如果没有及时响应则超时。
在 WrapGetUrlToChannel
中,我创建了一个新的代理 url,并将其分配给 mon
的 client.tr.Proxy
。
我的问题是 - 在请求进行期间修改客户端的传输是否安全?或者为了安全起见,我应该为每个代理使用不同的传输和客户端以确保它们不会干扰吗?
最佳答案
使用竞争检测器,它明确表明我不应该修改传输。最后,我决定轮流使用 *http.Transport 而不是代理,并在发出并发请求时使用唯一的客户端。
感谢@Flimzy
关于http - 在请求进行中修改 golang Http Transport 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49827554/