"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment empêcher les requêtes HTTP de continuer après un délai d'attente dans une Goroutine ?

Comment empêcher les requêtes HTTP de continuer après un délai d'attente dans une Goroutine ?

Publié le 2024-11-15
Parcourir:103

How to Prevent HTTP Requests from Continuing After Timeout in a Goroutine?

Goroutine Timeout

La fonction fournie, Find(), utilise une goroutine pour effectuer une série de requêtes HTTP et gérer leurs réponses. Cependant, le problème est que ces requêtes continuent en arrière-plan même si elles dépassent le délai d'attente spécifié.

Fuite potentielle de Goroutine

Il est peu probable qu'il y ait une fuite de goroutine dans le code. Lorsque la fonction Find() renvoie un délai d'attente, le goroutine principal continue et le goroutine d'arrière-plan est essentiellement abandonné.

Annulation de demande HTTP

Pour éviter de faire des demandes après un délai d'attente , la solution consiste à utiliser un context.Context pour chaque requête HTTP. Un contexte permet d'annuler la requête si un timeout survient.

func Find() (interface{}, bool) {
  ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
  defer cancel()

  ch := make(chan Response, 1)

  go func() {
    data, status := findCicCode()
    ch 

Lorsque le délai d'expiration se produit, l'appel de Cancel() annulera toutes les requêtes HTTP créées dans le ctx. Cela empêche tout traitement ultérieur ou toute ressource consommée par ces demandes.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3