使用google云数据存储模拟器与dev_appserver

Fra*_*son 9 python google-app-engine google-cloud-datastore google-cloud-platform

我一直在阅读这些内容,并试图将dev_appserver.py与新的"非遗留"谷歌云数据存储模拟器相连接.

我的主要动机是在我在本地计算机上进行开发时将我的appengine项目与我的google云数据流管道集成.

据我所知,这是设置集成的过程:

  • googledatastore使用pip 安装库(six如果使用的是系统python El Capitan,则可能需要强制使用easy_install 进行升级)
  • 使用谷歌云sdk工具运行谷歌云数据存储模拟器:

    gcloud beta emulators datastore start --no-legacy
    
    Run Code Online (Sandbox Code Playgroud)
  • 在dev_appserver将运行以下命令以设置数据存储环境变量的终端中:

    $(gcloud beta emulators datastore env-init --no-legacy)
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果app.yaml中的项目ID与gcloud工具中当前选择的项目ID不匹配,请在同一个shell中设置以下环境变量:

    export DATASTORE_USE_PROJECT_ID_AS_APP_ID=true
    
    Run Code Online (Sandbox Code Playgroud)
  • 运行dev_appserver.py并导航到http:// localhost:8000/datastore,它可以让您导航模拟器的数据存储区数据.

但是当我导航到我得到的网址时,这并不是那么顺利:

BadArgumentError: Could not import googledatastore.
This library must be installed with version >= 4.0.0.b1 to use the Cloud Datastore 
API.
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为如果我打开一个python shell并且运行import googledatastore没有错误发生.

如果我深入挖掘并检测dev_appserver中的导入代码并在此处记录错误,我会得到以下回溯:

Traceback (most recent call last):
  File "/usr/local/google-cloud-sdk/platform/google_appengine/google/appengine/datastore/datastore_pbs.py", line 52, in <module>
    import googledatastore
  File "/Library/Python/2.7/site-packages/googledatastore/__init__.py", line 21, in <module>
    from . import helper
  File "/Library/Python/2.7/site-packages/googledatastore/helper.py", line 25, in <module>
    from google.datastore.v1beta3 import entity_pb2
ImportError: No module named datastore.v1beta3 
Run Code Online (Sandbox Code Playgroud)

我也没有google.datastore.v1beta3在常规python shell中导入的问题.

如果我运行PYTHONINSPECT=x dev_appserver.py app.yaml并退出shell执行这些导入运行没有错误,甚至更奇怪.也许dev_appserver.py正在启动时,python路径有些奇怪吗?

任何人都可以告诉我如何使这个功能工作?

更新:我在ubuntu 14.04(系统python 2.7.6,pip 8.1.2,通过easy_install,gcloud-sdk 118.0.0,app-engine-python 1.9.38)以及OS X(gcloud sdk 114.0.0)上重现了这个问题,app-engine-python 1.9.38,system python 2.7.10).

小智 5

各位高人,

现在可以使用带有 dev_appserver 的谷歌云数据存储模拟器!(链接

更新 Google Cloud SDK,然后使用“----support_datastore_emulator”运行 dev_appserver。

此功能为 Beta 版,欢迎试用!我们正在积极收集反馈。