Slide 13
Slide 13 text
13
同時通信に上限を設定して完成🙌
semaphoreも加える
type c struct {
sem *semaphore.Weighted // 同時通信を制御するセマフォ
}
func (c *c) RoundTrip(r *http.Request) (*http.Response, error) {
_ = c.sem.Acquire(r.Context(), 1) // 1通信につき1つ使う
defer c.sem.Release(1) // 最後に解放
return http.DefaultTransport.RoundTrip(r)
}
func main() {
...
proxy := httputil.NewSingleHostReverseProxy(target)
proxy.Transport = &c{
sem: semaphore.NewWeighted(1), // 同時通信の上限が1の例
}
...
}
3:35