Django MySql Row Locking



我希望使用一个由mysql表支持的Model作为作业队列,在并发进程之间共享。我试图避免出现两个进程执行相同作业的情况。第一个想法是向一行(作业)添加一个脏标志,该标志在进程执行该作业时进行标记。但是,我们有一个经典的问题,即检查脏位与写入脏位是不同的操作。如何使这两个操作成为原子操作?

理想情况下,每一行都有一个spinlock,它可以由更新该行的进程锁定,并阻止其他进程访问该行。Django支持这个概念吗?

QuerySet.select_for_update()处于开发版本中。在稳定版本中,您需要自己使用原始查询。

最新更新