在網絡上處理transactions的常用方法是將每個請求包裝在一個事務中。在Django中,您可以在要爲其啓用此行爲的每個數據庫的配置中將ATOMIC_REQUESTS
設置爲True。什麼類型的請求可以成爲`@ transaction.non_atomic_requests`的良好候選者?
它的工作原理是這樣的。在調用視圖函數之前,Django啓動一個事務。如果響應沒有問題產生,Django就承諾交易。如果視圖產生異常,Django會回滾事務。
雖然這種交易模式的簡單性很吸引人,但它也使得流量增加時效率低下。爲每個視圖打開一個事務有一些開銷。
對於不需要包裝在transactions中的請求,您可以申請@transaction.non_atomic_requests
裝飾器。
給定一個包含多個View類和請求方法的Django view.py
。我該如何決定哪些請求會成爲非原子裝飾器的優秀候選者?
什麼「陷阱」可能潛伏?
我看得出POST
方法不與.save()
製作好的候選人或任何東西,但我還需要注意的事項?