transactionsをウェブ上で処理する一般的な方法は、各リクエストをトランザクション内にラップすることです。 Djangoでは、この動作を有効にする各データベースの設定でATOMIC_REQUESTS
をTrueに設定できます。`@ transaction.non_atomic_requests`にはどのような種類のリクエストが適していますか?
このように動作します。ビュー関数を呼び出す前に、Djangoはトランザクションを開始します。応答が問題なく生成された場合、Djangoはトランザクションをコミットします。ビューが例外を生成すると、Djangoはトランザクションをロールバックします。
このトランザクションモデルの単純さは魅力的ですが、トラフィックが増加すると非効率的になります。すべてのビューのトランザクションを開くには、いくつかのオーバーヘッドがあります。
transactionsでラップする必要がないリクエストの場合は、@transaction.non_atomic_requests
デコレータを適用できます。
Django view.py
では、いくつかのViewクラスとリクエストメソッドがあります。どのような要求が非アトムデコレータの良い候補になるかを決めるにはどうすればよいですか?
"gotchas"とは何が潜んでいるのですか?
私はPOST
の方法では良い候補を作ることができないか、.save()
で何かを作ることができましたが、他に何を調べるべきですか?