Goroutines 可以在 Google App Engine(標準環境)中比 HTTP 請求更長壽嗎?
在 Google App Engine 的標準環境中,似乎有可能創建在處理 HTTP 請求後繼續運行的 goroutine。但是,這種方法可能會導致問題:
func MyHandler(w http.ResponseWriter, r *http.Request) { go func() { // do something ... }() return // 200 }
答案:
App Engine 的標準環境不支援超出要求壽命的 Goroutines。相反,使用runtime.RunInBackground在後台goroutine中執行程式碼。提供的函數將接收與請求上下文不同的後台上下文。需要注意的是,每個實例的並發後台請求數上限為 10 個。
func MyHandler(w http.ResponseWriter, r *http.Request) { err := runtime.RunInBackground(c, func(c appengine.Context) { // do something... }) return // 200 }
或者,支援存在於請求上下文中的 goroutine。然而,App Engine 的執行環境僅支援單一作業系統執行緒上的 goroutine,因此不會發生並行執行。
以上是Goroutines 能否在 Google App Engine(標準環境)中比 HTTP 請求存活得更久?的詳細內容。更多資訊請關注PHP中文網其他相關文章!