Tuesday, 6 August 2013

Does an AppEngine Transaction need to perform a get and a put operation for it to be useful?

Does an AppEngine Transaction need to perform a get and a put operation
for it to be useful?

Two code examples (simplified):
.get outside the transaction (object from .get passed into the
transactional function)
@db.transactional
def update_object_1_txn(obj, new_value):
obj.prop1 = new_value
return obj.put()
.get inside the transaction
@db.transactional
def update_object2_txn(obj_key, new_value):
obj = db.get(obj_key)
obj.prop1 = new_value
return obj.put()



Is the first example logically sound? Is the transaction there useful at
all, does it provide anything? I'm trying to better understand appengine's
transactions. Would choosing the second option prevent from concurrent
modifications for that object?

No comments:

Post a Comment