Ich arbeite mit Django auf ein großes Projekt."Select_for_update" von einem atomaren Block noch TransactionManagementError
Ich rufe einen Sellerie task
aus dem save
eines Modells, das eine Methode aufruft, die eine andere Methode in einer Schleife aufruft. Das heißt:
celery task --> function A()
A() --> for i in range(1,100): call function B()
Jetzt B()
ist mit einem atomic()
Dekorateur gewickelt und hat einen select_for_update
Anruf in seinem Inneren.
ich immer noch TransactionManagementError('select_for_update cannot be used outside of a transaction.',)
Ich weiß nicht, warum das so ist. Ich habe getestet mit Verzögerung der Aufgabe um ein paar Sekunden, so dass die save
ist verpflichtet, wenn die Aufgabe aufgerufen wird. Hat nicht geholfen.
Meine Frage ist: Warum bekomme ich eine TransactionManagementError
, wenn ich bereits in einem Atomblock bin?