iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
自我挑戰組

與AI搶奪意識ing系列 第 21

transaction (事務) / atomic 機制

  • 分享至 

  • xImage
  •  

你記得的應該是 Django 的 transaction (事務) / atomic 機制。我幫你拆開來說:

為什麼「跑到一半斷線」會歸零

在 Django 裡,如果你用 transaction.atomic(),它會把整段資料庫操作包在一個 事務 (transaction) 之中。

成功跑完 → 整個 transaction 一次提交 (commit)。

中途錯誤或斷線 → 整個 transaction 回滾 (rollback),就像什麼都沒發生。

這就是為什麼你看到「跑到一半斷線,他就會歸 0」。

工具 / 功能名稱

transaction.atomic() → 最常用的,確保操作要嘛全有要嘛全無。

@transaction.atomic → 可以加在函式上,效果一樣。

savepoint → 原子區塊內還可以再切小段,用來部分回滾。

類似的延伸工具

django-transaction-hooks(外掛套件): 可以在 transaction commit 後掛勾做後續事。

Celery 任務 + 交易邏輯: 如果你要「斷線後重試」,常見做法是把中間狀態存起來,交給 Celery 重跑。

所以如果你要避免「什麼都歸零」,就要自己設計「中途狀態儲存機制」(例如:在資料庫裡寫一個 progress 表),而不是完全依靠 transaction。Django transaction 本身的理念就是 一致性高於中途結果。


上一篇
專案拆解重建加上LLM的工具製作
系列文
與AI搶奪意識ing21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言