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.
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