首頁  >  文章  >  後端開發  >  如何在 Go 中正確關閉後台處理的 HTTP 請求?

如何在 Go 中正確關閉後台處理的 HTTP 請求?

Barbara Streisand
Barbara Streisand原創
2024-10-29 21:19:30934瀏覽

How to Properly Close an HTTP Request for Background Processing in Go?

如何正確關閉後台處理的請求

簡介

回應HTTP 要求時,您可能需要在後台處理負載同時以非阻塞回應進行響應。這可以透過關閉請求並啟動 goroutine 來繼續處理來實現。

回應關閉並傳回 202 Accepted

在提供的程式碼範例中,您將狀態碼設為 202 Accepted 以指示該要求被接受以進行後台處理。要正確關閉請求,只需編寫header 並啟動goroutine,如下所示:

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

從請求處理程序返回

一些開發人員建議在編寫後從請求處理程序返回header並啟動goroutine。然而,這不是必需的並且可以省略。從處理程序返回會自動發出請求完成的信號,並釋放分配給它的資源。

HTTP Status 200 OK

如果您打算傳回 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn