Maison > développement back-end > Golang > Pourquoi le package « http » de Go manque-t-il des signaux d'annulation dans les requêtes POST avec des corps ?

Pourquoi le package « http » de Go manque-t-il des signaux d'annulation dans les requêtes POST avec des corps ?

Linda Hamilton
Libérer: 2024-12-11 06:17:09
original
150 Les gens l'ont consulté

Why Does Go's `http` Package Miss Cancellation Signals in POST Requests with Bodies?

Package http Go : Capturer le signal d'annulation dans les requêtes avec des corps

Question : Pourquoi le package http Go ne parvient-il pas à capturer les signaux d'annulation pour le POST requêtes avec des corps ?

Réponse : Le serveur http de Go lit le corps de la requête pour détecter quand le client ferme la connexion. Jusqu'à ce que le corps soit lu, aucune vérification des connexions fermées n'est effectuée.

Par conséquent, pour gérer cela correctement, lisez le corps de la demande dès que possible, même s'il n'est pas nécessaire dans la logique de traitement de la demande.

Solution :

func handler(w http.ResponseWriter, r *http.Request) {
    go func(done <-chan struct{}) {
        <-done
        fmt.Println("message", "client connection has gone away, request got cancelled")
    }(r.Context().Done())

    io.Copy(ioutil.Discard, r.Body) // Read the body to detect the closed connection
    time.Sleep(30 * time.Second)
    fmt.Fprintf(w, "Hi there, I love %s!\n", r.URL.Path[1:])
}
Copier après la connexion

Lorsque le client ferme la connexion plus tôt, ce code le détectera et annulera tout travail en cours.

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