我有一个称为SignupTokens的模型,当用户从我们的聊天机器人确认他们时,我们将用isUsed = True更新实体,如果我们用isUsed = False查询特定相同电子邮件的未使用令牌,则更新实体后,即使在那里isUsed标志已使用True更新。每当我们遇到此问题时,我们都会在数据存储实体中进行一次双重检查。
SignupTokens.gql("where isUsed = :1 and email = :2",False,email).get()
我们已经尝试过use_cache = False了
SignupTokens.gql("where isUsed = :1 and email = :2",False,email).get(use_cache=False)
请让我知道有人对此有想法。
最佳答案
这很可能不是ndb缓存问题,这是由于eventual consistency导致的预期数据存储行为:从实体的isUsed
属性设置为True
到更新与您的查询相对应的索引之前,将需要一些时间相应地。
在索引更新之前,查询结果将不会反映该更改。
关于python - 如何忽略NDB缓存的查询结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54878566/