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

AppEngine keyProperty fields in query results get None value after a while

我在 App Engine ndb 查询的结果中出现了奇怪的行为。

模型(简化):

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

通过查询收集了全套对象(约 100-200 个):

trainers = Trainer.query()

A 这个阶段,个别训练对象有一个有效的用户对象 可以通过以下方式获得:

user = trainer.user.get()

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

事实证明,有些 KeyProperty 字段的键没有指向任何地方(类似于悬空指针)。

然而,最大的问题是 Trainers 对象被用作延迟调用中的参数,因此这些对象必须以某种方式序列化(大概使用酸洗)。关联的关键属性曾经有效,但是,可能由于不同的时间,该方法不再有效。将训练对象的 urlsafe 键作为参数传递给延迟函数解决了这个问题。