我有类似的东西:
newsletter = Newsletter.select_for_update().latest()
newsletter.started_sending = timezone.now()
newsletter.save()
newsletter.send()
Run Code Online (Sandbox Code Playgroud)
然后它遇到了一个竞争条件,我发送重复,大概是因为send()被两个cron作业击中.这导致我认为锁是在第一次保存时释放的,我认为它在视图结束之前不会释放.
它是在第一次保存时发布的,对吗?
Kit*_*nde 10
来自https://docs.djangoproject.com/en/dev/topics/db/transactions/#topics-db-transactions-requirements
Django的默认事务行为
Django的默认行为是使用open事务运行,当调用任何内置的数据更改模型函数时,它会自动提交.例如,如果调用model.save()或model.delete(),则会立即提交更改.
| 归档时间: |
|
| 查看次数: |
3280 次 |
| 最近记录: |