Wenn Sie auf eine HTTP-Anfrage mit dem Statuscode 202 Akzeptiert antworten, ist es wichtig, das Schließen der Anfrage korrekt durchzuführen Stellen Sie sicher, dass die Nutzlast weiterhin im Hintergrund verarbeitet werden kann.
Ausreichende Rücksendeerklärung
Bei der Bearbeitung einer Anfrage, die geschlossen werden muss, ist es wichtig, return von der Handlerfunktion, um deren Abschluss zu signalisieren. Dies liegt daran, dass gemäß der http.Handler-Dokumentation die Rückgabe darauf hinweist, dass die Anfrage abgeschlossen ist und der Zugriff auf den ResponseWriter oder Request.Body gleichzeitig oder nach der Rückgabe ungültig ist.
Entfernen der endgültigen Rückgabe
Die Rückkehr von der Handler-Funktion reicht aus, um die Anfrage zu schließen, sodass Sie die abschließende Return-Anweisung ganz weglassen können. In Go beendet die Ausführung eine Funktion, wenn ihre letzte Anweisung ausgeführt wird, unabhängig davon, ob es sich um eine Rückgabe handelt oder nicht.
Minimaler Code für 202 akzeptiert
Wenn Sie nur brauchen Um den Statuscode 202 Accepted zurückzugeben und die Verarbeitung im Hintergrund fortzusetzen, reicht der folgende Minimalcode aus:
<code class="go">func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() }</code>
Vorsichtsmaßnahme bei gleichzeitiger Nutzung
Bedenken Sie, dass beim Zugriff auf die ResponseWriter- oder http.Request-Werte in der gleichzeitigen Goroutine nach der Rückkehr vom Handler sind unsicher, da sie möglicherweise wiederverwendet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich HTTP-Anfragen mit dem Status „202 akzeptiert' ordnungsgemäß schließen und gleichzeitig die Hintergrundverarbeitung in Go beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!