2015-02-26 79 views
0

我有一个数据库,维护调用列表。每个星期我都必须导入一个excel文件或一个json对象,以确保调用数据列表与另一个具有不同格式的db同步(我必须对从xls得到的数据做一些解释)GAE数据存储写操作达赖

无论如何,我做了一个函数来完成所有的导入操作,但是我注意到每次运行它时我都会得到不同的结果。

经过一番调查后,我注意到,如果我按顺序执行大量put(),则put的结束与数据存储中可用数据的时间之间存在滞后,因此查询有时会返回不同的值。

我固定它增加了延迟

time.sleep(1) 

但我认为应该有一个办法只有等到数据存储是稳定的,而不是一个固定的时间量。我试图找到它,但没有运气。

任何帮助?

+0

请显示您的代码 –

回答

2

这是一个经常重复的问题 - 尽管其他问题最初可能看起来并不相同。

如果您使用的是数据存储您必须在“最终一致性”念起来

https://cloud.google.com/developers/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/

在我看来应用服务引擎和数据存储的文档或许应该“如果你还没有读过率先关于最终的一致性,请现在就这样做!“在真的很大的类型;-)

+0

...和tl; dr,使用同步强制操作,如对一个关键“get”强制一致性强,完成后瓦特/所有的“放”,并在你查询之前检查。同时考虑(为了速度)multi_put_async并在所述同步强制之前等待所有未来。 –