在测试环境中共享GAE(ndb)和GCE(gcloud.datastore)之间的数据存储。

4
我有一个使用ndb API的Python appengine应用程序,想要进行后台工作并将结果存储到数据存储中,以便appengine可以使用。我想使用GCE或我的电脑来实现这一点,但是在appengine之外,ndb API不可用,替代方案似乎是非常不同的gcloud.datastore API。如何保证你所推送的内容(使用gcloud API)与你获得的内容相一致(即匹配ndb实体)?我无法进行单元测试,因为本地服务器不同(gcd vs dev_appserver)。这里有一个解决方法(但是是Java)。我应该替换appengine中的ndb代码以确保一致性(但失去ndb自动缓存等优势)吗?是否有一个明显的解决方案我没有想到?如果有人遇到了同样的问题,你是如何处理的?谢谢。

1
你看过远程 API(https://cloud.google.com/appengine/docs/python/tools/remoteapi)了吗? - konqi
谢谢!确实很有趣。 - nicoxx
1个回答

3
如果你非常关注一致性并且正在使用 ndb 的高级功能,那么你应该考虑使用 App Engine 远程 API,通过远程 (HTTP) 接口来运行任意代码。这可能有助于你完成工作,但请记住,你使用的 CPU 周期将在 GAE 中,而不是在 GCE 中。
如果你愿意等待一段时间,我们正在将 ndb API 移植到针对 Cloud Datastore API 运行,这意味着你在 App Engine 中运行的相同代码将在 App Engine 之外 (在本地计算机或 Google Compute Engine 中) 工作。 gcloud.datastore (gcloud-python) API 是更底层的,因此你应该可以更好地控制最终存储在 Datastore 中的数据。它并非旨在与 ndb 完全相同(因此不具备某些高级功能,例如派生字段或地理点作为一级公民),但是 ndb 使用自己的 Python 逻辑来存储这些字段,因此如果你熟悉较低级别的数据表示,就可以安全地编写。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接