简单来说, 被transaction.atomic()包裹的代码块只在代码块顺利完成后进行数据库层面的commit。在使用transaction当中, Model.save()都不做commit,因此如果在transaction当中设置异步任务,使用get()查询数据库,将看不到对象在事务当中的改变.这也是实现”可重复读”的事务隔离级别,即同一个事务里面的多次查询都应该保持结果不变。

解决Django transaction进行事务管理踩过的坑

解决Django transaction进行事务管理踩过的坑

解决Django transaction进行事务管理踩过的坑