【问题标题】:google.golang.org/appengine/datastore vs cloud.google.com/go/datastoregoogle.golang.org/appengine/datastore 与 cloud.google.com/go/datastore
【发布时间】:2018-06-24 21:05:11
【问题描述】:

我构建了一个小型 Go 应用程序,用于 AppEngine。我通过 go run .. 在本地运行 go,我正在尝试使用数据存储。

我通过gcloud beta emulators datastore start 在本地运行数据存储模拟器,并通过导出DATASTORE_EMULATOR_HOST go 应用程序可以在本地连接到它。

所以我使用cloud.google.com/go/datastore 构建了我的应用程序,但是当我将它部署到 AppEngine 时,任何连接到数据存储区的 go 代码似乎都会使整个应用程序因超时而失败。

在尝试对此进行调试时,我遇到了使用 google.golang.org/appengine/datastore 的代码并编写了一些测试代码,我得到了在 AppEngine 上工作的东西。

但是,这个datastore 似乎无法连接到数据存储模拟器。

  1. 是否有人在使用cloud.google.com/go/datastore 时遇到超时问题?我似乎读到了人们说出于某种原因使用 this 包而不是 golang.org 包的不同答案。
  2. 我可以在 AppEngine 上使用cloud.google.com/go/datastore 吗?我更喜欢使用这个包,因为它适用于数据存储模拟器。

简而言之,我正在使用以下代码:

import "cloud.google.com/go/datastore"
...
ctx := appengine.NewContext(r)
...
client, err := datastore.NewClient(dsCtx, projectID)
...
key := datastore.IDKey(TestKind, testID, nil)
err = client.Get(ctx, key, &data)

这是在 AppEngine 上超时的代码,但在本地运行良好。

同样适用于 AppEngine 的代码如下:

import "google.golang.org/appengine/datastore"
...
ctx := appengine.NewContext(r)
key := datastore.NewKey(ctx, TestKind, "", testID, nil)
err := datastore.Get(ctx, key, &data)

这将在本地失败,并显示以下内容:

Metadata fetch failed: Get http://metadata/computeMetadata/v1/instance/attributes/gae_project: dial tcp: lookup metadata: no such host

任何帮助将不胜感激。

【问题讨论】:

    标签: google-app-engine go google-cloud-datastore


    【解决方案1】:

    来自Connecting to Cloud Datastore with App Engine section in the App Engine Cloud Datastore Overview

    您不能将 Cloud Datastore 客户端库与 Go 应用程序一起使用 在 App Engine 标准环境中。

    基本上,cloud.google.com/go/datastore 用于在 App Engine 标准环境之外使用 Cloud Datastore。这包括非 App Engine 环境以及 App Engine 柔性环境。

    google.golang.org/appengine/datastore 用于在 App Engine 标准环境中使用它

    对于 App Engine 标准环境的本地测试,请考虑使用 dev_appserver.py,它通过 --support_datastore_emulator 标志提供与 Cloud Datastore 模拟器的集成。

    【讨论】:

    • 好的,谢谢,这比“您不能在 App Engine 标准环境中将 Cloud Datastore 客户端库与 Go 应用程序一起使用。”更好。
    • 如果这回答了您的问题,请随时接受。
    猜你喜欢
    • 2021-09-22
    • 2021-09-22
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多