Python GAE数据存储存根问题

Python GAE数据存储存根问题,python,django,google-app-engine,google-cloud-datastore,Python,Django,Google App Engine,Google Cloud Datastore,我正在为我的Django应用程序在Google应用程序引擎上编写一些单元测试。测试通过调用init_datastore_v3_stub使用数据存储存根,并在其中存储一些测试数据。对于简单的模型,这很好,但是当我存储一个模型B,它是模型a的子类时,我只会在作为a查询模型时得到结果。示例代码: class A(db.polymodel.PolyModel): ... class B(A): .... B().put() print A.all().count() # prints

我正在为我的Django应用程序在Google应用程序引擎上编写一些单元测试。测试通过调用
init_datastore_v3_stub
使用数据存储存根,并在其中存储一些测试数据。对于简单的模型,这很好,但是当我存储一个模型
B
,它是模型
a
的子类时,我只会在作为
a
查询模型时得到结果。示例代码:

class A(db.polymodel.PolyModel):
    ...
class B(A):
    ....
B().put()

print A.all().count() # prints 1
print B.all().count() # prints 0
请注意,在生产中,两行都将打印1。 有什么建议吗

更新: 问题似乎与数据库本身无关,而是与PolyModel实现有关。我注意到,
B.\u实体
不包含它应该包含的
'class'
值,而是包含
'u class'
。它看起来像:

print B._entity # prints {... '_class'=[u'A', u'B'] ...}
这就解释了我得到的结果。 当我手动设置
'class'
值时,一切正常:

b = B()
b._entity['class'] = b._entity['_class']
b.put()

print B.all().count() # prints 1

当我找到问题的原因时,我将继续调查并在此处更新。

我自己找到了解决方案,这是我代码中的一个错误,我意外地将每个属性的
名称
属性覆盖为字段的类成员名称,对于
PolyModel
class
属性,它是
\u class
。这发生在为测试创建模拟模型的过程中,这就是为什么我在生产中没有遇到这个问题。

您可能会遇到最终的一致性。在考虑其他问题之前,你需要排除这个问题。谢谢@TimHoffman的评论。我尝试在打印之前添加
sleep(10)
,结果仍然相同。我还能做些什么来排除最终的一致性呢?从刚才放置的对象中获取密钥,然后调用Get(),这将解决最终的一致性问题。