`gcloud.datastore` 在哪里保留其本地开发状态,我该如何清除它?

Where does `gcloud.datastore` persist its local dev state, and how do I clear it?

我正在试验 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)

当 运行 在本地(在开发模式下)时,实体的状态在 运行 之间持续存在。我一辈子都弄不清楚它们的存储位置或如何清除在 creating/accessing gcloud.datastore.Client 之后创建的开发数据存储。据我所知,它使用的地方与 ndb 在 运行 通过 dev_appserver.py 时使用的地方不同。

我试过用这样的方法来解决(当 运行ning 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 运行ning:

时尝试过这个
$ sudo lsof | grep -Ei 'python'
# nothing meaningful

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

天哪,我觉得我很傻!默认情况下,gcloud.datastore 连接到...(等待)... Google 云数据存储。真实的。我不知道为什么我期望有任何不同。

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

因此,如果您想要在本地拥有一个"dev"云数据存储运行,您需要运行Datastore emulator. This is more complicated than running dev_appserver.py (which pretty much takes care of all this for you; see, e.g., this workflow 以了解如何从应用的数据存储区调用中推断 index.yaml 文件的值)。如果不为 start 命令提供 --data-dir 选项,则默认本地存储位置为 ~/.config/gcloud/emulators/datastore/....

我没有删除这个问题,而是把它留在这里作为 warning/explanation 给像我这样的笨蛋。