Django交易ATOMIC_REQUESTS

ip.*_*ip. 4 python django transactions

我真的不清楚如何在Django中设置原子请求.在数据库设置中将ATOMIC_REQUESTS设置为True时,是否表示所有视图现在都在事务中运行?如果我只想要只在某个事务中运行某些视图,该怎么办?那么我是否需要明确定义所有其他未使用@transaction.non_atomic_requests装饰器在事务中运行的其他内容?

Kev*_*nry 9

何时ATOMIC_REQUESTS设置为True数据库设置是否意味着所有视图现在都在事务中运行?

是.来自文档:

在调用视图函数之前,Django启动一个事务.如果生成的响应没有问题,Django会提交事务.如果视图产生异常,Django将回滚事务.

那么我是否需要明确定义所有其他未使用@transaction.non_atomic_requests装饰器在事务中运行的其他内容?

是.

ATOMIC_REQUESTS启用时,它仍然是可以防止的观点在一个事务中运行.[ non_atomic_requests装饰器]将否定ATOMIC_REQUESTS给定视图的效果.

一旦你决定了应该使用事务的具体情况,我宁愿不使用ATOMIC_REQUESTS,只是transaction.atomic在适当的时候使用(无论是作为装饰器还是上下文管理器).以下是文档中的示例:

@transaction.atomic
def viewfunc(request):
    # This code executes inside a transaction.
    do_stuff()
Run Code Online (Sandbox Code Playgroud)