0
我有這樣一個Python Django的REST API的觀點:爲什麼Django REST API裝飾器會破壞Django的non_atomic_requests裝飾器?
from rest_framework.decorators import api_view, permission_classes
from django.db import transaction
@api_view([ 'POST' ])
@permission_classes((IsAuthenticated,))
@transaction.non_atomic_requests
def myview(request):
with transaction.atomic():
db_do_something1()
with transaction.atomic():
do_do_something2()
return some_response
的SQL實際運行對在這種情況下,我的PostgreSQL數據庫之前和db_do_something1
和2
後創建的保存點 - 但嚴格離開後不提交與塊。
整個視圖仍然包裝在一個BEING
和COMMIT
只發布到視圖結束時的數據庫。
如果我將@transaction.non_atomic_requests
修飾器移動到修飾器列表的開頭,那麼我會得到正確的行爲,每個with
塊都在其自己的事務中,並在末尾提交。
這是怎麼回事?