Heim >Backend-Entwicklung >Golang >Wie schließe ich eine HTTP-Anfrage für die Hintergrundverarbeitung ordnungsgemäß?

Wie schließe ich eine HTTP-Anfrage für die Hintergrundverarbeitung ordnungsgemäß?

DDD
DDDOriginal
2024-10-28 15:17:021063Durchsuche

 How to Properly Close an HTTP Request for Background Processing?

Eine HTTP-Anfrage für die Hintergrundverarbeitung ordnungsgemäß schließen

Bei HTTP-Anfragen ist es oft wünschenswert, sofort zu antworten, während die Anfragenutzlast im verarbeitet wird Hintergrund. Dies wird erreicht, indem die Anfrage mit dem Statuscode 202 Akzeptiert bestätigt wird, sodass Clients fortfahren können, ohne auf den Abschluss der Hintergrundaufgabe warten zu müssen.

Antworten mit 202 Akzeptiert

Um solche Anfragen ordnungsgemäß zu bearbeiten, ist es wichtig, die Anfrage nach dem Senden des 202 Accepted-Headers zu schließen. Dies liegt daran, dass die Rückkehr vom Handler den Abschluss der Anfrage bedeutet. Daher wird empfohlen, die Anfrage explizit zu schließen, bevor die Hintergrundaufgabe gestartet wird:

<code class="golang">func index(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusAccepted)
    go sleep()
    return // Close the request
}</code>

Antworten mit 200 OK

Bei Antworten mit 200 OK reicht es aus um vom Handler zurückzukehren, da die HTTP-Header automatisch so eingestellt werden, dass sie eine erfolgreiche Antwort anzeigen.

<code class="golang">func index(w http.ResponseWriter, r *http.Request) {
    go sleep()
    return // Close the request
}</code>

Achtung

Es ist wichtig zu beachten, dass das HTTP Anforderungs- und Antwortwerte sollten nicht in der Hintergrund-Goroutine verwendet werden, nachdem die Anforderung geschlossen wurde, da sie möglicherweise wiederverwendet werden.

Das obige ist der detaillierte Inhalt vonWie schließe ich eine HTTP-Anfrage für die Hintergrundverarbeitung ordnungsgemäß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn