Google app engine 高复制数据存储上的DjangAppEngine和最终一致性问题

Google app engine 高复制数据存储上的DjangAppEngine和最终一致性问题,google-app-engine,django-nonrel,djangoappengine,eventual-consistency,Google App Engine,Django Nonrel,Djangoappengine,Eventual Consistency,我正在使用DjangAppEngine,我认为它在处理高端应用程序数据存储的最终一致性方面遇到了一些问题 首先,DjangAppEngine中甚至没有实现实体组 其次,我认为当您执行DjangAppEngine get时,底层的应用程序引擎系统正在执行一个应用程序引擎查询,这最终是一致的。因此,您甚至不能假设使用键的一致性 假设这两种说法都是正确的(我认为他们是正确的),那么如何在高复制数据存储上使用DjangAppEngine构建任何复杂的应用程序呢?每次保存一个值,然后尝试获取相同的值,不能

我正在使用DjangAppEngine,我认为它在处理高端应用程序数据存储的最终一致性方面遇到了一些问题

首先,DjangAppEngine中甚至没有实现实体组

其次,我认为当您执行DjangAppEngine get时,底层的应用程序引擎系统正在执行一个应用程序引擎查询,这最终是一致的。因此,您甚至不能假设使用键的一致性


假设这两种说法都是正确的(我认为他们是正确的),那么如何在高复制数据存储上使用DjangAppEngine构建任何复杂的应用程序呢?每次保存一个值,然后尝试获取相同的值,不能保证它是相同的。

我并不真正了解DjangAppEngine,但是如果appengine查询只包含键,则它被视为只包含键的查询,并且您将始终获得一致的结果。

无论您在appengine模型之上安装了什么系统,当您将其保存到数据存储时,仍然可以得到一个密钥。当您通过人力资源数据存储中的实体键查找实体时,您一定会得到最新的结果

看看djangappengine/db/compiler.py:get\u matching\u pk()

如果通过pk执行djangomodel.get(),它将转换为Google应用程序引擎get()。
否则它将转换为查询。这里还有改进的余地。提交修复程序?

谢谢,但需要一个appengine查询!=DjangAppEngine查询。另外,我认为您混淆了什么是仅关键查询。您是一般性地说还是理解DjangAppEngine实际上是如何工作的?好的,谢谢。所以我的第二句话实际上是假的。。。很高兴知道。如果是这样,您可以创建自己的锁。您需要在事务中进行测试和设置,并且对象查找必须仅使用其pk。无论如何都不是完美的,但它可以阻止某些类型的比赛。github上还有一个请求父密钥支持的pull请求。另外,看起来应该可以修改compiler.py,使非pk django get()调用仍然转换为appengine get()调用。