Google App Engine ndb:混合同步和异步操作的顺序



使用 Google App Enginendb时,我是否需要担心在同一函数中混合同步和异步放置操作?

例如,假设我有一些这样的代码:

class Entity(ndb.Model):
some_flag = ndb.BooleanProperty()

def set_flag():
ent=Entity()
ent.some_flag = False
ent.put_async()
ent.some_flag = True
ent.put()

该数据存储是否负责确保在同步写入之前应用所有挂起的异步写入(以便在set_flag运行后,保证将True标志(?还是存在竞争条件,因为异步放置可能会在同步放置之后完成?

不,数据存储不会为您处理此问题。

即使使用同步放置,来自不同线程的调用也可以相互覆盖。

我建议您阅读一些有关交易的信息,以及何时以及为什么有帮助。

有关示例代码和实用解决方案,您可以查看 Dan McGrath 对"云数据存储:避免竞争条件的方法"问题的回复。

最新更新