gpt4 book ai didi

python - Django: "How often"我需要@transaction.atomic

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:03 29 4
gpt4 key购买 nike

atomic blocks can be nested. In this case, when an inner block completes successfully, its effects can still be rolled back if an exception is raised in the outer block at a later point.

我是否正确理解我不需要在 do_stuff() 之前添加 @transaction.atomic 装饰器?如果 do_staff 更改数据库并发生异常,父 view_func 将负责回滚。

from django.db import transaction

@transaction.atomic
def viewfunc(request):
# This code executes inside a transaction.
do_stuff()

不是必需的,对吗?

from django.db import transaction

@transaction.atomic
def do_stuff():
do_something_in_the_database()

@transaction.atomic
def viewfunc(request):
# This code executes inside a transaction.
do_stuff()

最佳答案

这取决于你想做什么。您显示代码的方式 - 不,您不需要在 do_stuff 上使用 @transaction.atomic

但是,如果您希望 do_stuff 能够独立于 viewfunc 失败,您可能会这样做。

例如:

@transaction.atomic
def viewfunc(request):
try:
do_stuff()
except Exception:
handle_exception()
do_other_stuff

在这种情况下,do_stuff 中的失败将回滚该段,但不会取消外部事务。

您可以在此处查看更多详细信息:https://docs.djangoproject.com/en/2.2/topics/db/transactions/

关于python - Django: "How often"我需要@transaction.atomic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55763061/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com