Вложенная трансакция Django в двух базах данных Ошибка ProgramError

Я хочу иметь вложенную транзакцию в разных базах данных. (Я знаю, что это не гарантирует транзакционную фиксацию в двух базах данных). Один слой вложенной транзакции кажется нормальным, однако если я снова вложил транзакцию внешнего слоя во внутренний слой, иногда я вижу ошибку django.db.utils.ProgrammingError: relation "xxx" does not exist (Не 100% времени, но ошибка возникает почти каждый 1 из 2 запусков).

Ниже приведен код для воспроизведения этого:

 with transaction.atomic(using="db1"):
        with transaction.atomic(using="db2"):
            qs = ExampleModel.objects.all() 
            for obj in qs:
                obj.type = "new_value"

            ExampleModel.objects.bulk_update(qs, ["type"])
            with transaction.atomic(using="db1"):
                ExampleModel.objects.using("db1").bulk_update(qs, ["type"])

Что могло вызвать это? Есть ли способ обойти это?

Вернуться на верх