@andrewshkovskii

Вложенные транзакции/частичное сохранение моделей django?

Есть метод, который выполняет определнные действия и логирует были ли эти действия завершены, как и кем.

Есть проблема, если во время выполнения действий произошла ошибка — надо все созданные инстансы моделей, кроме логов, удалить — т.е. сделать rollback. Но вместе с rollback'ом удалятся и логи. Как быть в этом случае?

В сейвпоинтах сохраняется вся цепочка моделей измененных? Есть ли возможность вложенных транзакций?

Я попробовал через enter_transaction_management /leave_transaction_management — во время выполнения возник эксепшен, сначала TransactionManagementError(«This code isn't under transaction management»), но его не удалось поймать/подавить, причем я проверял сначала, что is_managed…



Python 2.7.3, Django 1.4.2, postgresql 9.1
  • Вопрос задан
  • 3312 просмотров
Пригласить эксперта
Ответы на вопрос 1
FloppyFormator
@FloppyFormator
Если это логи действий пользователя, то я бы предложил проверять возможную ошибку и восстанавливать предыдущее состояние явно, т. е. не полагаться на инструменты БД. Если же это системные логи, то вряд ли есть смысл вести таковые в БД: например, в эти логи никогда не попадёт ошибка подключения к БД.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы