Ich versuche, meinen Code zu aktualisieren, der commit_manually
zu atomic
verwendet, um nach Django 1.7 dann 1,8 zu gehen, aber ich habe Probleme, rollback
während in einem atomaren Block nicht zu können. Das Problem stammt von einem Flag, das wir zu Importroutinen, dry_run, hinzugefügt haben. In den früheren Django Versionen @commit_manually
uns folgendes zu tun erlaubt:Ausgabe eines Rollback() in einem atomaren Block
if self.dry_run:
transaction.rollback()
else:
transaction.commit()
Wenn ich ein Rollback in einem atomic
Block vorzuformen versuchen, wirft er einen Fehler:
TransactionManagementError : "This is forbidden when an 'atomic' block is active."
Um dies ich zu arbeiten versuchte Verwendung von set_autocommit
Beispiel zu machen:
def do_some_import(self)
transaction.set_autocommit(False)
#import routine
if self.dry_run:
transaction.rollback()
transaction.set_autocommit(True)
else:
transaction.commit()
transaction.set_autocommit(True)
Aber das fühlt sich falsch an, irgendwelche Vorschläge oder Einsichten?
Ich lese diesen Abschnitt der Dokumentation vollständig durch, den ich testen werde, und ich melde mich bei Ihnen! –