Sobes.tech
Junior — Middle

Comment peut-on déterminer qui a initié l'annulation du contexte actuel?

sobes.tech IA

Réponse de l'IA

En Go, il n’est pas possible de déterminer directement qui a initié l’annulation du contexte actuel, car le contexte ne stocke pas d’informations sur l’initiateur de l’annulation.

Cependant, vous pouvez :

  • Utiliser différents contextes avec différentes sources d’annulation (par exemple, context.WithCancel, context.WithTimeout, context.WithDeadline) pour comprendre la cause de l’annulation selon le type de contexte.
  • Transmettre des informations supplémentaires via le contexte avec context.WithValue, pour identifier l’initiateur.

Exemple de vérification de la cause de l’annulation :

select {
case <-ctx.Done():
    err := ctx.Err()
    if err == context.Canceled {
        fmt.Println("Annulation manuelle")
    } else if err == context.DeadlineExceeded {
        fmt.Println("Délai d’attente dépassé")
    }
}

Pour déterminer précisément l’initiateur de l’annulation, il faut implémenter un mécanisme personnalisé pour transmettre cette information.