`gcloud.datastore`在哪里坚持其本地开发状态,如何清除它?

时间:2016-07-04 17:45:49

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

我正在尝试Google App Engine's flexible Python 3 environment and Cloud Datastore。在本地测试时,这(通常)要求在Gunicorn之类的应用程序中运行您的应用程序并从gcloud.datastore访问数据存储区API。例如:

import gcloud.datastore as g_datastore
ds = g_datastore.Client(...)
entity = datastore.Entity(key=ds.key(...))
ds.put(entity)

在本地运行时(在开发模式下),实体的状态在运行之间保持不变。我不能为我的生活找出它们存储的位置或如何清除创建/访问gcloud.datastore.Client后创建的开发数据存储区。据我所知,它不会使用ndb通过dev_appserver.py运行时使用的相同位置。

我试图用这样的东西来解决这个问题(运行OS X时):

$ touch foo
$ GCLOUD_PROJECT=... python .../main.py
 * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: ...
127.0.0.1 - - [04/Jul/2016 10:36:01] "GET / HTTP/1.1" 200 -
...
^C
$ sudo find /private/tmp /var/db /var/tmp ~/.config/gcloud ~/Library -newer foo
...
# nothing meaningful

我尝试查看源代码,发现some unit test cleanup code:a)不与pip install gcloud一起分发; (对我来说更重要)b)没有给出任何实际存储内容的线索。

当Gunicorn在奔跑的时候我甚至试过这个:

$ sudo lsof | grep -Ei 'python'
# nothing meaningful

在本地运行时(在开发模式下)foo gcloud.datastore在运行之间存储状态的地方?!

1 个答案:

答案 0 :(得分:4)

男孩我觉得很傻!默认情况下,gcloud.datastore会连接到...(等待它)... Google Cloud数据存储区。真实的。我不知道为什么我期待任何不同。

我没有立即解决这个问题,因为我的本地gcloud配置已经配置为使用我的帐户凭据,并且在运行本地实例时设置了GCLOUD_PROJECT环境。哎呦! (难怪我没有在本地磁盘上看到任何变化!)

所以,如果你希望拥有一个" dev"在本地运行的云数据存储区,您需要运行Datastore emulator。这比运行dev_appserver.py更复杂(它几乎为您解决了所有这些问题;例如,请参阅this workflow了解如何从您的应用推断index.yaml文件的值&#39 ; s数据存储区调用)。如果您未向--data-dir命令提供start选项,则默认本地存储位置为~/.config/gcloud/emulators/datastore/...

我不会删除这个问题,而是将其作为警告/解释留给像我这样的numbskulls。