transaction

Pang·2021년 10월 17일
0
post-thumbnail

transaction

django에서 트랜잭션 이용하기

transaction이란?

여러개의 프로세스가 묶여져 마치 하나처럼 동작하는 방식이다.
그렇기 때문에 성공 아니면 실패 두 가지 결과밖에 존재하지 않는다.

그렇다면 언제 사용하는가?

쿼리문을 동시에 수행하고 싶을 때

예) 물건을 구입할 때 돈은 빠져나갔는데 에러로 인해 구매 처리가 안됐을 경우
또는 구매처리는 됐는데 돈은 안빠져나갔을 경우

이런 상황에서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(
        .
        .
        )

이런식으로 동시에 수행시킬 부분과 아닌 부분을 나눌 수 있다.

profile
팡 화이토

0개의 댓글