我在Django中使用atomic()
时遇到了问题:
https://docs.djangoproject.com/en/1.7/topics/db/transactions/#django.db.transaction.atomic
对于一些方法(称为外部请求/响应循环),我需要确保该方法在一个事务中执行。我必须强制执行耐久性。如果已经处于事务中,atomic()
会默默地使用保存点。记住:ACID http://en.wikipedia.org/wiki/ACID
- 原子性
- 一致性
- 隔离性
- 耐久性 <--- 这就是我想要强制执行的。
atomic()
的关键字参数savepoint
在这里没有帮助。如果您使用savepoint=False
,则atomic()
会在已经处于事务中时默默地不执行任何操作(根据文档)。如果已经有一个事务正在运行,我需要一个异常。
不幸的是,旧的
is_managed()
已被弃用且没有替换。我如何创建一个
atomic_raise_exception_if_already_in_transaction()
装饰器?