So8*_*res 10 django transactions
我有一个django项目,其中数据库值需要经常自己更新.有一个cronjob运行来更新数据库中的这些值,但有些操作需要原子事务.有没有人知道如何在不通过视图的情况下使模型方法成为django中的完整事务?
理想情况下,我希望能够在方法的开头启动事务并在最后提交它,然后只需能从任何地方(视图或cronjob)调用该方法,并保证该方法是原子的.
如果您知道如何执行此操作,我还需要知道,如果提交失败(由于同时写入等),事务会自动重新尝试,或者我是否必须手动捕获失败异常并重新调用该方法.
谢谢.
Ben*_*end 15
您是否看过Django的交易文档?特别是@ transaction.commit_on_success(源代码)装饰器.如果装饰函数返回而不引发异常,则它将提交事务.如果发生异常,则执行回滚.