Maison > développement back-end > Golang > Comment puis-je désactiver le regroupement de connexions dans les clients HTTP de Go à des fins de test ?

Comment puis-je désactiver le regroupement de connexions dans les clients HTTP de Go à des fins de test ?

Patricia Arquette
Libérer: 2024-11-08 02:07:01
original
251 Les gens l'ont consulté

How can I disable connection pooling in Go's HTTP clients for testing purposes?

Désactivation du regroupement de connexions pour les clients HTTP Go

Dans les scénarios de test, il peut être nécessaire de désactiver le regroupement de connexions dans les clients HTTP de Go afin de créer de nouvelles connexions TCP pour chaque HTTP/ Demande 1.x. Ce guide explore différentes approches pour y parvenir.

Le http.Transport par défaut utilisé par http.Client permet le regroupement de connexions, ce qui peut s'avérer gênant. Pour désactiver le pooling, vous pouvez définir Transport.MaxIdleConnsPerHost sur une valeur négative ou définir Transport.DisableKeepAlives sur true.

Option 1 : désactiver les Keep-Alives

Les Keep-alives sont couramment utilisés pour maintenir des connexions, mais définir Transport.DisableKeepAlives sur true force le client à fermer les connexions après chaque demande. Cette approche ajoute un en-tête de requête « Connexion : fermer » et peut être définie comme suit :

t := http.DefaultTransport.(*http.Transport).Clone()
t.DisableKeepAlives = true
c := &http.Client{Transport: t}
Copier après la connexion

Option 2 : définissez MaxIdleConnsPerHost sur une valeur négative

MaxIdleConnsPerHost, lorsqu'il est défini sur -1, limite le nombre de connexions inactives par hôte à 0. Cela désactive efficacement le pooling :

t := http.DefaultTransport.(*http.Transport).Clone()
t.MaxIdleConnsPerHost = -1
c := &http.Client{Transport: t}
Copier après la connexion

Option 3 : définissez Dialer Keep-Alive sur -1

Dialer.KeepAlive peut sembler une option pour désactiver le pooling, mais il définit uniquement la période de conservation pour les connexions actives. Le pooling n'est pas affecté par ce paramètre.

Autres considérations

Si vous le souhaitez, vous pouvez combiner les options ci-dessus avec des paramètres personnalisés pour DialContext, TLSHandshakeTimeout, ResponseHeaderTimeout et ExpectContinueTimeout dans l'objet Transport utilisé par le http.Client.

Il est important de noter que les limitations de pooling ne se limitent pas au nombre de connexions actives par hôte. Cependant, des options telles que MaxIdleConnsPerHost et DisableKeepAlives fournissent des méthodes efficaces pour désactiver le pooling à des fins de test.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal