【发布时间】:2014-02-25 16:36:26
【问题描述】:
以下代码按预期工作,不会触发断言:
@ndb.transactional
@ndb.tasklet
def Foo():
assert ndb.in_transaction()
以下代码中断,触发断言:
@ndb.transactional
@ndb.toplevel
def Foo():
assert ndb.in_transaction()
我尝试用 ndb.transaction 调用或 ndb.transaction_async 调用替换装饰器,但都不起作用。
ndb.toplevel 和事务是否存在错误?
【问题讨论】:
-
ndb.toplevel的唯一目的是设置一个新的默认上下文。所以我不明白ndb.transactional(ndb.toplevel(Foo()))的用法。为什么需要你创建一个事务然后删除它的上下文?
标签: python google-app-engine asynchronous transactions app-engine-ndb