【问题标题】:Python: Save data in google cloud datastore emulatorPython:在谷歌云数据存储模拟器中保存数据
【发布时间】:2017-10-18 11:15:09
【问题描述】:

我正在尝试在本地测试 google 的云数据存储。我的测试步骤是:

  1. 使用 Scrapy 抓取数据
  2. 使用本地模拟器将数据保存到云数据存储中

为了使用本地模拟器,我按照所有步骤操作

  1. 启动本地模拟器:gcloud beta emulators datastore start
  2. 设置本地环境变量:gcloud beta emulators datastore env-init

然而,在python中,当使用以下命令访问云数据存储时,它总是将数据直接保存到谷歌云而不是保存到本地模拟器

#Imports the Google Cloud client library
from google.cloud import datastore

# Instantiates a client
datastore_client = datastore.Client()

sample_entry = some_data

# Saves the entity
datastore_client.put(sample_entry)

您似乎无法指定库以使用本地数据存储模拟器,就像他们在 Node.js 客户端中提供的那样

var datastore = gcloud.datastore({
        apiEndpoint: "http://localhost:8380"
});

我的问题是,如何让谷歌云数据存储python库使用本地模拟器而不是直接使用云

【问题讨论】:

  • 调用env-init后,DATASTORE_EMULATOR_HOST环境变量的值是多少?
  • 虽然我一直是本地测试和开发服务的一员,但 Google Cloud 环境非常复杂,我绝对不建议使用他们的平台仿真包。像这样的 Bug,以及与实际部署环境的行为不一致,让人头疼,不值得拥有;除非有你不能这样做的原因,否则我建议只在云环境中使用暂存项目。
  • 可能,您可能需要按照此处给出的步骤仔细检查您的模拟器设置:cloud.google.com/datastore/docs/tools/datastore-emulator

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


【解决方案1】:

你需要eval $(gcloud beta emulators datastore env-init)

gcloud beta emulators datastore env-init 只打印设置必要环境变量的命令。

【讨论】:

    【解决方案2】:

    你可以试试

    if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
      # Production
    else:
      # Local development server
    

    你可以在这里关注更多,https://cloud.google.com/appengine/docs/standard/python/tools/using-local-server

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 2015-07-17
      • 2017-05-11
      • 1970-01-01
      相关资源
      最近更新 更多