首页  >  文章  >  后端开发  >  Goroutines 能否在 Google App Engine(标准环境)中比 HTTP 请求存活得更久?

Goroutines 能否在 Google App Engine(标准环境)中比 HTTP 请求存活得更久?

DDD
DDD原创
2024-10-29 00:36:30878浏览

Can Goroutines Outlive HTTP Requests in Google App Engine (Standard Environment)?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn