Maison > développement back-end > Golang > Pourquoi le client Go HTTPS ne réutilise-t-il pas les connexions par défaut ?

Pourquoi le client Go HTTPS ne réutilise-t-il pas les connexions par défaut ?

Barbara Streisand
Libérer: 2024-11-02 10:19:02
original
289 Les gens l'ont consulté

Why Doesn't the Go HTTPS Client Reuse Connections by Default?

Pourquoi le client Go HTTPS ne réutilise pas les connexions

Dans cette discussion, nous explorons un problème dans lequel le client Go HTTPS ne parvient pas à réutiliser les connexions, ce qui entraîne un comportement potentiellement problématique.

Description du problème

Le code Go fourni crée plusieurs connexions à un hôte particulier, malgré l'utilisation d'une seule instance http.Transport avec DisableKeepAlives défini sur false. Ceci est différent du code Python similaire utilisant la bibliothèque de requêtes, qui réutilise les connexions.

Comprendre le problème

Le malentendu initial était que le client Go devait réutiliser les connexions par défaut. Cependant, des précisions ont révélé que le comportement par défaut nécessite que la réponse soit fermée avant que les connexions puissent être réutilisées.

Solution

Pour assurer la réutilisation des connexions HTTP dans Go, deux étapes essentielles doivent être respectées :

  1. Lire jusqu'à ce que la réponse soit complète (par exemple, utilisez ioutil.ReadAll(resp.Body))
  2. Fermez le corps de la réponse (c'est-à-dire resp.Body.Close())

Considérations supplémentaires

Bien que l'absence de contrôle maximal des connexions soit une limitation, elle peut être atténuée par des requêtes de limitation de débit utilisant time.Tick.

Conclusion

En résolvant le problème de la fermeture du corps de la réponse, les développeurs peuvent garantir que le client HTTP de Go réutilise correctement les connexions. Ceci est crucial pour éviter d’accumuler des connexions TCP excessives.

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