在測試場景中,可能需要停用Go 的HTTP 用戶端中的連線池來為每個HTTP/ 建立新的TCP 連線1.x 請求。本指南探討了實現此目的的各種方法。
http.Client 使用的預設 http.Transport 啟用連線池,這可能會很不方便。若要停用池化,可以將 Transport.MaxIdleConnsPerHost 設為負值或將 Transport.DisableKeepAlives 設為 true。
Keep-alives 通常用於維護持久性連接,但將 Transport.DisableKeepAlives 設為 true 會強制客戶端在每次請求後關閉連接。這種方法增加了一個「Connection: close」請求頭,可以設定如下:
MaxIdleConnsPerHost,設定為-1 時,將每個主機的空閒連線數限制為0。這有效地禁用了pooling:
Dialer.KeepAlive 可能看起來像是停用池的選項,但它僅設定保持活動期限活躍的連線。池化不受此設定的影響。
如果需要,您可以將上述選項與使用的 Transport 物件中的 DialContext、TLSHandshakeTimeout、ResponseHeaderTimeout 和 ExpectContinueTimeout 的自訂設定結合。 http.Client.
需要注意的是,池化限制並不限於活動的數量每個主機的連線數。但是,MaxIdleConnsPerHost 和 DisableKeepAlives 等選項提供了出於測試目的而停用池的有效方法。
以上是如何在 Go 的 HTTP 用戶端中停用連線池以進行測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!