使用自动提交事务的Django save()行为

jho*_*ola 7 mysql django innodb django-models

我有以下设置:

  • 一些数据处理工作者get_conf()通过http 从django视图获得配置.
  • 使用MySQL/InnoDB后端将配置存储在django模型中
  • 配置模型具有重写save()方法,该方法告诉工作人员重新加载配置

我注意到有时工人没有正确接收更改的配置.特别是,当conf重新加载时间比平时短时,工作人员得到了"旧"配置get_conf()(缺少最近的更改).Django中使用的事务模型是默认的自动提交.

我提出了以下可能导致该行为的可能情况:

  1. 新配置已保存
  2. save() 返回,但MySQL/InnoDB仍在处理(自动)提交
  3. 引导工作人员并为新配置发出http请求
  4. MySQL(自动)提交完成

上述场景中的第2步可能吗?也就是说,save()如果正在使用自动提交事务方法,那么django模型可以在DB中实际提交数据之前返回吗?或者,要向下一层,可以在提交完成之前完成MySQL自动提交INSERTUPDATE操作完成(更新/插入对其他事务可见)?

小智 0

对象可能变脏,请尝试保存后刷新对象。

obj.save()

obj.refresh_from_db()

参考: https: //docs.djangoproject.com/en/1.8/ref/models/instances/#refreshing-objects-from-database