它是一个有效的事务,我的事务方法只是完成db.put()操作?

时间:2014-02-13 17:00:07

标签: google-app-engine python-2.7 google-cloud-datastore

我曾试图让我的整个POST方法都是事务性的,但却无法进行,因为它调用了其他方法,因此嵌套了。所以我所做的就是创建一个事务方法,只是为了完成我的实体的db.put()。

def post(self):
    myobj = db.get(key)
    myobj.property = x + 1
    second_method()
    my_txn(my_obj)

@db.transactional
def my_txn(obj):
    db.put(obj)

这是创建交易的有效方式吗?

1 个答案:

答案 0 :(得分:2)

不,我认为它对TA的概念没有任何用处。

这样的事情:

def post(self):
    second_method()
    my_txn(key)

@db.transactional
def my_txn(key):
    myobj = db.get(key)
    myobj.property = x + 1
    db.put(obj)

您应该使用事务以确保read(get)和write(put)是一致的。

通过这种方式,您知道当您获得实体并且直到您编写实体时,如果有任何更改,同时将中止此TA并重试(默认为3)。

在你使用它的方式中,get在交易之外,从而使交易无用