Google 애플 리케이션 엔진과 NDB에서 초보자입니다. 내 문제는 : 내가 모델에서 1 개체, 이 있다면 나는 충돌을 방지하고자 할 때 2 명 병렬 작업, 코드 예제 :NDB에서 일괄 작업을 수행하는 방법은 업데이트 ndb에 대한 원자 적 또는 잠금 레코드입니다.
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 작업을 병렬로 호출하고 entity (id = 1)의 작업 count = 0보다 먼저 호출하는 경우. 나는 예를 들어 카운트 값에 충돌, 을 방지하려면 : NDB에
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
수 = 20. ndb에서 count = 30의 값이 필요합니다.
제게 해결책을 보여주십시오.
감사합니다. 나는 거래를 시도 할 것이다. –