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中文网其他相关文章!