共通のデータベース サーバーに接続された複数の Web ホストで Django を実行しています。データベースには、保留中のジョブの単純なテーブルが含まれています。例えば
class Job(models.Model):
name = models.CharField(max_length=255, null=False, help_text='task to do')
worker = models.CharField(max_length=255, null=True, help_text='globally unique host name')
Django の ORM を使用して保留中のジョブ (worker が null の場合) をクエリし、アトミックにワーカー名を設定して、2 つの Django プロセスが誤って同じジョブを取得しないようにするには (競合状態を回避するには) はどうすればよいですか?
理想的には、テーブル ロック内でクエリ/更新によって単純にラップしたいのですが、Django の ORM にはこの機能が組み込まれていないようです。