【发布时间】:2012-05-28 03:59:49
【问题描述】:
我在连接到一个公共数据库服务器的几个 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 为空)并自动设置工作者名称,因此不会有两个 Django 进程意外地获取同一个作业(即避免竞争条件)?
理想情况下,我只想通过查询/更新在表锁中进行包装,但 Django 的 ORM 似乎没有内置此功能。
【问题讨论】:
-
您是否考虑过使用 Celery 进行这种分布式任务管理,而不是尝试自己构建它?
-
@DanielRoseman,是的。我目前正在使用 Celery 执行许多任务,但我不太关心它。
标签: python django django-orm