gpt4 book ai didi

go - 如何在 Golang Google Datastore 包中正确使用上下文?

转载 作者:IT王子 更新时间:2023-10-29 02:02:25 26 4
gpt4 key购买 nike

我已经开始在我目前工作的公司的一个项目中使用 Google Cloud Datastore。

https://godoc.org/cloud.google.com/go/datastore

在提供的示例中,他们使用上下文并将其传递给连接实例

ctx := context.Background()
dsClient, err := datastore.NewClient(ctx, "my-project")

通过文档,您将看到它们将上下文传递给对数据库进行操作的所有函数,我不确定它们是传递相同的指针还是为每个操作创建一个新指针。

我当前的设置是一个名为“store”的包中上下文的全局变量,我保留了与数据库通信的所有结构函数,并且我每次都使用该全局变量。我不知道这样做的效果是什么,我不确定为什么要使用上下文,我是否应该在每次对数据库进行操作时获取 context.Background() 的引用?

最佳答案

context.Background 是全局上下文——所以不需要全局变量。大多数情况下,您会希望使用该上下文的子项,取消或超时。

ctx, cancel := context.WithCancel(context.Background)
//or
ctx, cancel := context.WithTimeout(context.Background, time.Second * 30)

然后您可以使用取消功能很好地关闭您的应用程序,或者如果请求挂起则取消并重试。如果您从不打算取消或超时操作,那么使用 context.Background 就可以了。

此外,context.Context 是一个接口(interface),所以它总是通过引用传递,所以对某个实例的所有使用都指向相同的上下文。

关于go - 如何在 Golang Google Datastore 包中正确使用上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48048923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com