0

我正在将我的 Golang AppEngine 应用程序迁移到 1.12+,我需要切换到cloud.google.com/go/datastore. 我不清楚如何将它与 AppEngine 一起使用,有人可以验证我的假设吗?

我的假设是main()我可以在里面的某个地方运行(注意context.Background()):

db, err := datastore.NewClient(context.Background(), datastore.DetectProjectID)
if err != nil {                                                                                                                                                                                                                                                                                                    
    panic(err)                                                                                                                                                                                                            
}                                                                                                                                                                                                                                                                                                                  
defer db.Close()

然后从我的处理程序中,我可以使用该数据库:

func blah(w http.ResponseWriter, r *http.Request) {                                                                                                                                                                                                                      
    ctx := r.Context()
    key := datastore.NameKey("blah", blah, nil)
    db.Get(ctx, key, blah2)
}

我对么?还是我需要datastore.NewClient()与每个 Web 处理程序分开运行?

4

1 回答 1

0

datastore.NewClient()为每个 Web 处理程序运行。我只对每个 Web 处理程序执行一次,并且仅当该代码需要使用数据存储时。另外,请确保Close()在处理程序的末尾使用它,否则会泄漏内存。

于 2021-09-27T13:17:20.640 回答