我可以在 Google App Engine(标准环境)中使用 Goroutines 吗?

以下示例似乎有效,但使用起来安全吗?我的目标是做一些非常简单的后台处理(而实际的任务队列工作感觉太重了)。


func MyHandler(w http.ResponseWriter, r *http.Request) {


  go func() {

    // do something ...

  }() 


  return // 200

}


LEATH
浏览 154回答 1
1回答

慕仙森

不支持超过请求的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 调用,则另一个请求可能会由同一实例处理。(来源)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go