回應HTTP 要求時,您可能需要在後台處理負載同時以非阻塞回應進行響應。這可以透過關閉請求並啟動 goroutine 來繼續處理來實現。
在提供的程式碼範例中,您將狀態碼設為 202 Accepted 以指示該要求被接受以進行後台處理。要正確關閉請求,只需編寫header 並啟動goroutine,如下所示:
<code class="go">func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() }</code>
一些開發人員建議在編寫後從請求處理程序返回header並啟動goroutine。然而,這不是必需的並且可以省略。從處理程序返回會自動發出請求完成的信號,並釋放分配給它的資源。
如果您打算傳回 200 OK 狀態碼,您可以簡單地呼叫 sleep功能無需設定狀態碼。如果沒有設定 headers,伺服器會自動設定 200 OK。
關閉後台處理請求的最佳實踐是寫入header 並啟動goroutine,如以下程式碼所示:
<code class="go">func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() }</code>
從處理程序返回之後,請記得避免在並發goroutine 中使用http.ResponseWriter 或httpRequest 值,因為它們可能會被伺服器重複使用。
以上是如何在 Go 中正確關閉後台處理的 HTTP 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!