私は大きなプロジェクトでdjangoを使っています。アトミックブロックから "select_for_update"がまだ呼び出されましたTransactionManagementError
ループ内で別のメソッドを呼び出すメソッドを呼び出すモデルのsave
の中から、セロリを呼びます。task
それは次のとおりです。今
celery task --> function A()
A() --> for i in range(1,100): call function B()
B()
はatomic()
デコレータで包み、その中select_for_update
コールを持っています。
私はまだこれがなぜ私にはわからないTransactionManagementError('select_for_update cannot be used outside of a transaction.',)
を取得します。私は、タスクが呼び出された時点でsave
がコミットされるように、タスクを数秒遅らせてテストしました。助けてくれなかった。
私の質問は:アトミックブロックに入っているのに、なぜTransactionManagementError
になるのですか?この@ketanbhatt