pos*_*ita 3 google-cloud-datastore google-app-engine-python app-engine-flexible
我正在尝试使用Google App Engine的灵活Python 3环境和Cloud Datastore。在本地进行测试时,这(通常)要求在Gunicorn之类的应用中运行您的应用,并从中访问Datastore API gcloud.datastore。例如:
import gcloud.datastore as g_datastore
ds = g_datastore.Client(...)
entity = datastore.Entity(key=ds.key(...))
ds.put(entity)
Run Code Online (Sandbox Code Playgroud)
在本地运行(在开发人员模式下)时,实体的状态会在两次运行之间保持不变。我一辈子都无法弄清楚它们的存储位置或如何清除在创建/访问后创建的dev数据存储gcloud.datastore.Client。据我所知,它使用的位置与ndb通过via运行时所使用的位置不同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
Run Code Online (Sandbox Code Playgroud)
我尝试查看源代码,发现一些单元测试清除代码:a)不与pip install gcloud; 一起发布;并且(对我来说更重要)b)不提供有关该材料实际存储位置的任何线索。
在Gunicorn运行时,我什至尝试了这个:
$ sudo lsof | grep -Ei 'python'
# nothing meaningful
Run Code Online (Sandbox Code Playgroud)
在gcloud.datastore本地运行(在dev模式下)时,foo 在两次运行之间是否存储其状态?
男孩,我觉得傻!默认情况下,gcloud.datastore连接到...(等待它)... Google Cloud Datastore。真正的一个。我不知道为什么我期望有什么不同。
我没有立即解决这个问题,因为gcloud已经配置了本地配置以使用我的帐户凭据,并且GCLOUD_PROJECT在运行本地实例时设置了环境。哎呀!(难怪我没有在本地磁盘上看到任何更改!)
因此,如果要在本地运行“开发”云数据存储,则需要运行数据存储模拟器。这比运行要复杂得多dev_appserver.py(这几乎为您完成了所有工作;例如,请参见此工作流程,了解如何index.yaml从应用程序的数据存储区调用中推断文件的值)。如果不--data-dir为start命令提供选项,则默认本地存储位置为~/.config/gcloud/emulators/datastore/...。
与其删除问题,不如将其留在这里,作为对像我这样的麻木头骨的警告/解释。
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |