我有一个使用带有ndb API的数据存储的Python appengine应用程序,我想做后台工作并将结果存储到数据存储区中,因此appengine使用它。
我想使用GCE或我的计算机这样做,但是ndb API在appengine之外是不可用的,替代方案似乎是gcloud.datastore API,这是非常不同的。
您如何保证推送的内容(使用gcloud API)与您获得的内容一致(即:匹配ndb实体)?
我不能进行单元测试,因为本地服务器不一样(gcd vs dev_appserver)。 Here是一种解决方法(但在Java中)。
我应该在appengine中用gcloud.datastore替换ndb代码以确保一致性(但是失去了像自动缓存那样的ndb优势......)?
我缺少一个明显的解决方案吗?如果有人有同样的问题,你是如何处理的?
由于
答案 0 :(得分:3)
如果您真的担心一致性并且使用ndb
的精彩功能,那么您应该考虑使用Remote API for App Engine,这有效地让您感到高兴通过远程(HTTP)接口运行任意代码。它可能有助于您完成工作,但请记住,您使用的CPU周期将在GAE中 - 在GCE中。
如果您愿意等待一段时间,我们正在努力移植ndb
API以针对Cloud Datastore API运行,这意味着您在App Engine中运行相同的代码将在App Engine之外(在您的本地计算机上或在Google Compute Engine内部)工作。
gcloud.datastore
(gcloud-python)API更低级,因此您应该对数据存储中最终的数据进行更多控制。 没有构建为与ndb
相同(因此没有像衍生字段或地理位置那样的一些奇特的东西作为一等公民)但是,ndb
使用它自己的Python逻辑存储这些字段,因此如果您对较低级别的数据表示感到满意,您应该能够安全地编写。