【发布时间】:2014-03-18 15:29:24
【问题描述】:
Django 1.6 提议 @transaction.atomic 作为从 1.5 开始对事务管理进行改造的一部分。
我有一个由 Django 管理命令调用的函数,该命令又由 cron 调用,即在这种情况下没有触发事务的 HTTP 请求。片段:
from django.db import transaction
@transaction.commit_on_success
def my_function():
# code here
在上述代码块中,commit_on_success 使用单个事务处理在 my_function 中完成的所有工作。
用@transaction.atomic 替换@transaction.commit_on_success 会导致相同的行为吗? @transaction.atomicdocs state:
原子性是数据库事务的定义属性。原子 允许我们创建一个代码块,其中的原子性 数据库有保障。如果代码块成功 完成后,更改将提交到数据库。如果有一个 异常,更改将回滚。
我认为它们会导致相同的行为;对吗?
【问题讨论】:
-
为了更清楚地说明这一点,有一个非常好的Djangocon talk 关于这个......
标签: django transactions django-1.6