为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
LEATH 2021-09-09 13:47:13
以下示例似乎有效,但使用起来安全吗?我的目标是做一些非常简单的后台处理(而实际的任务队列工作感觉太重了)。func MyHandler(w http.ResponseWriter, r *http.Request) {  go func() {    // do something ...  }()   return // 200}
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

不支持超过请求的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 调用,则另一个请求可能会由同一实例处理。(来源)


查看完整回答
反对 回复 2021-09-09
  • 1 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信