gpt4 book ai didi

google-cloud-datastore - 如何在 NDB 中进行批处理操作是原子的或用于更新 ndb 的锁定记录

转载 作者:行者123 更新时间:2023-12-04 05:40:25 25 4
gpt4 key购买 nike

我是谷歌应用引擎和 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 个 session 并行调用 2 个操作,并且在操作之前 count=0 实体(id=1)。我想防止计数值发生冲突,
例如:
 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 中计数 = 20。
ndb 中 count=30 的期望值。

请告诉我解决方案。

最佳答案

您可以为此使用事务。但它不会扩展。

关于google-cloud-datastore - 如何在 NDB 中进行批处理操作是原子的或用于更新 ndb 的锁定记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11321245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com