Sam*_*ing 7 python google-app-engine asynchronous transactions app-engine-ndb
以下代码按预期工作,不会触发断言:
@ndb.transactional
@ndb.tasklet
def Foo():
assert ndb.in_transaction()
Run Code Online (Sandbox Code Playgroud)
以下代码中断,触发断言:
@ndb.transactional
@ndb.toplevel
def Foo():
assert ndb.in_transaction()
Run Code Online (Sandbox Code Playgroud)
我尝试用ndb.transaction调用或ndb.transaction_async调用替换装饰器,但都没有工作.
ndb.toplevel和事务有错误吗?
我发现问题是两者都创造了新的背景.transactional创建一个上下文,并确保在其中发生的所有写入都是非冲突的.toplevel创建一个上下文,并确保解决在其中创建的所有期货.
因此,toplevel是破坏事务的上下文.这两者在当前的实现中无法合并.
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |