Sobes.tech
Junior — Middle

Comment implémenter une limite de temps d'exécution d'une opération avec context.WithTimeout en Go?

sobes.tech IA

Réponse de l'IA

En Go, pour limiter le temps d'exécution d'une opération, on utilise souvent un contexte avec un délai d'expiration via la fonction context.WithTimeout. Elle retourne un nouveau contexte et une fonction d'annulation. Si l'opération ne se termine pas avant l'expiration du délai, le contexte est automatiquement annulé.

Exemple d'utilisation :

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Opération terminée :", result)
case <-ctx.Done():
    fmt.Println("Délai dépassé :", ctx.Err())
}

Ici, someLongRunningOperation doit accepter ctx et vérifier périodiquement ctx.Done() pour une interruption correcte. Cela permet d'annuler en toute sécurité l'opération en cas de délai dépassé.