我试图解决一个错误。以下函数将一个Key对象添加到名为tabs的用户属性中。由于某种原因,在用户实体上调用put()
后,新保存的密钥不会被保存。无法弄清楚为什么。也许有一些延迟可以防止更改立即出现?在这种情况下,memcache的解决方案?数据存储不会将新更改保存到实体中
class User(GeoModel):
tabs = db.ListProperty(db.Key)
@db.transactional
def add_tab_transaction(self, user_key, tab_key):
user = models.User.get(user_key)
user.tabs.append(tab_key)
user.put()
logging.debug('tabs this user has:')
logging.debug(user.tabs) # prints the list with the new value
user = models.User.get(user_key)
logging.debug('rechecking the same thing:')
logging.debug(user.tabs) # prints the list without the new value
你是否看到这种情况发生在本地或服务器上?如果服务器是HRD? –
在服务器上,是的,它是高复制 – Uri
在这种情况下,有可能put()在您调用get()时不会完成写入所有副本,在这种情况下,您的get()将回归旧的价值观。你可以测试这个,稍后再运行另一个。一点点,我的意思是稍后一秒钟。如果你这样做,你还在返回旧数据吗? –