對於傳入的HTTP請求,我必須以202 Accepted狀態碼作爲響應,同時繼續在後臺處理有效負載。例如目的,這是我目前在做什麼:如何正確關閉請求並在後臺繼續處理請求
package main
import (
"fmt"
"log"
"net/http"
"time"
"github.com/nbari/violetear"
)
func sleep() {
time.Sleep(3 * time.Second)
fmt.Println("done...")
}
func index(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
go sleep()
}
func main() {
router := violetear.New()
router.HandleFunc("*", index)
http.Handle("/", router)
log.Fatal(http.ListenAndServe(":8080", router))
}
基本上,在處理我只是用WriteHeader
和以後調用的sleep
功能夠程內:
func index(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
go sleep()
}
在情況下我也喜歡回答「200 OK」,我注意到我可以簡單回報,例如:
func index(w http.ResponseWriter, r *http.Request) {
go sleep()
return
}
因此想知道如果我應該總是回來我想關閉:
func index(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusAccepted)
go sleep()
return
}
或者通過只寫標題,然後調用goroutine就足夠了。