防止db.get()返回过时的记录

时间:2013-05-02 16:08:20

标签: python google-app-engine python-2.7 google-cloud-datastore

我正在开发一个应用程序,让用户轮流将数据放入数据存储区,然后将数据通过频道广播给用户。有时,当用户获得()时,它将显示先前用户的更改。我怎么能阻止这个?有没有办法让put()阻塞直到它被写入?

2 个答案:

答案 0 :(得分:1)

查看文档中的祖先查询。

https://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency

您现在看到的结果始终是一致的,尽管在这种情况下您需要非常一致的结果。

答案 1 :(得分:0)

数据存储上的操作分为两部分:提交阶段和应用阶段。

您可以在https://developers.google.com/appengine/docs/python/datastore/overview#Datastore_Writes_and_Data_Visibility

了解更多相关信息

但是短版本是数据存储区操作在提交阶段之后返回,而不是在应用阶段之后。您可能已经告诉数据存储区添加/更新/删除对象,但即使在特定的操作系统返回后,该操作也需要几毫秒才能执行。

您可能需要在代码中添加人为延迟。

import time
time.sleep(1)