transaction
django에서 트랜잭션 이용하기
여러개의 프로세스가 묶여져 마치 하나처럼 동작하는 방식이다.
그렇기 때문에 성공 아니면 실패 두 가지 결과밖에 존재하지 않는다.
쿼리문을 동시에 수행하고 싶을 때
예) 물건을 구입할 때 돈은 빠져나갔는데 에러로 인해 구매 처리가 안됐을 경우
또는 구매처리는 됐는데 돈은 안빠져나갔을 경우
이런 상황에서transcation으로 묶어주면 여러개의 프로세스가 한 번에 수행되어
하나의 에러가 있으면 전체가 실패로 반한되는 것이다.
즉 두 가지 이상의 동작을 하나로 합치고 싶을 때 사용한다.
from django.db import transaction
@transaction.atomic
def test(a, b):
데코레이터로 묶어주는 가장 간단한 방식이다.
하나의 함수를 동시에 실행시킨다.
함수 전체만을 동시 실행시키므로 내부적으로 나누지 못한다.
그래서 나온 방법이
def test2(a, b):
a.objects.create(
..
.
)
with transaction.atomic():
b.objects.create(
.
.
)
이런식으로 동시에 수행시킬 부분과 아닌 부분을 나눌 수 있다.