以下示例似乎有效,但使用起來安全嗎?我的目標是做一些非常簡單的后臺處理(而實際的任務隊列工作感覺太重了)。func MyHandler(w http.ResponseWriter, r *http.Request) { go func() { // do something ... }() return // 200}
1 回答
慕仙森
TA貢獻1827條經驗 獲得超8個贊
不支持超過請求的Goroutine ,但您可以使用runtime.RunInBackground在后臺Goroutine 中執行代碼:
func MyHandler(w http.ResponseWriter, r *http.Request) {
err := runtime.RunInBackground(c, func(c appengine.Context) {
// do something...
})
return // 200
}
提供的函數將使用與提供的上下文不同(并且可能比提供的上下文更持久)的背景上下文調用。請注意,每個實例最多可同時進行 10 個后臺請求。這是另一個例子。
請注意,雖然支持存在于請求上下文中的Goroutines :
App Engine 的 Go 運行時環境完全支持 goroutine,但不支持并行執行:goroutine 被調度到單個操作系統線程上。這個單線程限制可能會在未來的版本中取消。一個給定的實例可以同時處理多個請求;這意味著,如果一個請求正在等待數據存儲 API 調用,則另一個請求可能會由同一實例處理。(來源)
- 1 回答
- 0 關注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消
