我是谷歌应用引擎和 NDB 的初学者。我的问题:如果我在模型中有 1 个实体,我想在 2 个并行操作时防止冲突,代码示例:
class MyModel(ndb.Model)
count = ndb.IntegerProperty()
def update_value(delta)
count=count +delta
操作1:
my_obj1= MyModel.get_by_id(1)
my_obj1.update_value(10)
my_obj1.put()
操作2:
my_obj2= MyModel.get_by_id(1)
my_obj2.update_value(20)
my_obj2.put()
如果 2 个会话并行调用 2 个操作,并且在操作之前,实体(id=1)的计数 = 0。我想防止计数值冲突,例如:
operation1: read my_obj1 from entity(id=1)
operation2: read my_obj2 from entity(id=1)
operation1: update_value(10) #count =10
operation2: update_value(20) # count=20
operation1: put() # save to ndb with count =10
operation2: put() # save to ndb with count=20
ndb 中的 count=20。ndb 中 count=30 的期望值。
请告诉我解决方案。