私が書いた一連のセロリタスクがあります。これらの各タスクは、ほんの一例として、著者 ID をパラメーターとして取り、その著者の書籍ごとに最新の価格を取得してデータベースに保存します。
@transaction.commit_on_success
Django のデコレータをタスクに追加して、タスクにトランザクションを追加したいと考えています。いずれかのタスクがクラッシュした場合、タスク全体が失敗し、データベースには何も保存されないようにしたいと考えています。
著者の書籍の価格をチェックする 12 人ほどのセロリ ワーカーがいますが、この単純なトランザクション ロジックが私の Postgres データベースでロックや競合状態を引き起こすのではないかと考えています。
私は掘り下げて、django-celery-transactionsと呼ばれるこのプロジェクトを見つけましたが、この背後にある実際の問題と、このプロジェクトが解決しようとしたことをまだ理解していません。