İçeriğe geç

Çoklu Yazma İçin Transaction Eksik (ARCH2065)

Anahtar python.orm.missing-transaction-for-multi-write · Önem warning · Kategori orm

Aynı metotta birbirine bağımlı iki veya daha fazla yazmanın açık bir transaction/atomic bloğuna sarılmaması, kısmi commit riski taşır. Yazmaları atomik yapın.

def transfer(src, dst, amount):
src.balance -= amount
src.save() # buradan sonra hata olursa para kaybolur
dst.balance += amount
dst.save()
def transfer(src, dst, amount):
with transaction.atomic():
src.balance -= amount
src.save()
dst.balance += amount
dst.save()

Bağımlı çoklu yazmaları transaction.atomic() bloğuna sarın, böylece ya hepsi ya hiçbiri commit edilir.