查询结果中的AppEngine keyProperty字段在一段时间后获得无值

时间:2017-11-15 22:25:25

标签: google-app-engine app-engine-ndb

我在app engine ndb查询的结果中遇到了奇怪的行为。

模型(简化):

class Trainer(polymodel.PolyModel):
    user = ndb.KeyProperty(kind='User')

使用查询收集一整套对象(约100-200):

trainers = Trainer.query()

在此阶段,单个教练对象具有有效的用户对象 可以通过以下方式获得:

user = trainer.user.get()

培训师集合分为几个中间python列表。 之后,大多数教练对象的None值都为.user。 这段代码曾经工作了好几年。有没有其他人遇到ndb.KeyProperty这样的问题?当数据集变得太大时,关键属性是否可能被清除?

1 个答案:

答案 0 :(得分:0)

事实证明,有一些KeyProperty字段的键无处指向(悬挂指针的种类)。

然而,最大的问题是Trainers对象在延迟调用中被用作参数,因此thos对象必须以某种方式序列化(可能使用pickle)。然而,过去关联的关键属性可能是因为时间不同,方法不再适用。将训练对象的urlsafe键作为参数传递给被保护的函数解决了这个问题。