【问题标题】:Unauthenticated error using gcloud-python to connect to google bigtable使用 gcloud-python 连接到 google bigtable 时出现未经身份验证的错误
【发布时间】:2016-10-25 05:45:21
【问题描述】:

我在我的项目中设置了一个 Google Cloud BigTable 集群。该项目的主要代码库在标准 Python App Engine 环境中运行,由于依赖 grpcio,因此无法使用 gcloud-python 库。为了解决这个问题,我在同一个项目中设置了一个 Python App Engine 灵活环境服务,并编写了一个非常简单的 Flask 服务器来运行它,然后我可以从我的标准环境中访问它。代码如下所示:

from gcloud import bigtable
app = Flask(__name__)

client = bigtable.Client(project=bigtable_config.PROJECT_ID, read_only=True)
cluster = client.cluster(bigtable_config.ZONE_ID, bigtable_config.CLUSTER_ID)
table = cluster.table(bigtable_config.TABLE_ID)

@app.route("/query/<start_key>/<end_key>")
def run_query(start_key, end_key):
    if not client.is_started():
        client.start()

    row_data = table.read_rows(start_key=start_key, end_key=end_key)
    row_data.consume_all()

    // do some stuff to the row data here, get results

    return jsonify(results)

我可以在本地运行这段代码,而且效果很好。我可以将它部署到我的服务中,并且它继续运行良好。但是,如果服务闲置了一段时间(我通常会在大约一个小时后注意到它),那么我发出的每个请求都会开始失败并出现以下错误:

NetworkError(code=StatusCode.UNAUTHENTICATED, details="Request had invalid authentication credentials.")

如果我重新部署该服务,它会再次开始工作。我在本地运行服务时没有观察到这种行为。

我做错了什么?我假设我在客户端设置中犯了一些错误,它没有正确使用应用程序引擎凭据。遇到此错误是否需要杀死客户端并重新启动?

【问题讨论】:

  • 昨晚,我们发布了更新到 PyPi 0.17.0 的 Python 客户端。它已经大幅更新。
  • 这个问题有一个未解决的问题github.com/GoogleCloudPlatform/gcloud-python/issues/1917
  • 太棒了,我会留意更新的。
  • 在这种情况下,请随意接受答案,因为这是正确的做法,当解决方案位于问答格式之外,并在另一个论坛中进行问题跟踪时。
  • @HerbertLee 你能谈谈 GitHub 问题吗?你能确认错误是在 Python Flexible 上吗(这意味着身份验证正在使用 GCE 令牌)?

标签: python google-app-engine google-cloud-bigtable


【解决方案1】:

github 正在跟踪此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2018-05-02
    • 2017-02-05
    • 1970-01-01
    • 2022-08-24
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多