Я работаю с django в большом проекте.«select_for_update», вызываемый из атомного блока. TransactionManagementError
Я называю сельдерей task
изнутри модели save
модели, которая вызывает метод, который вызывает другой метод в цикле. То есть:
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
, когда я уже в атомном блоке?