【发布时间】:2013-04-30 21:11:49
【问题描述】:
我将 Celery 与 RabbitMQ 一起使用。
对于我的用例,我肯定会有一些消息应该在任何给定节点上执行的实例,但是对于一个特定的队列,我需要仅在其上执行的事情始发服务器。这是因为它适用于仅限本地文件:
@celery.task
def calculate_hash(filename):
target = Models.objects.get(filename=filename)
hasher = hashlib.md5()
with open(filename, "rb") as f:
chunk = f.read(64 * 1024)
while len(chunk) > 0:
hasher.update(chunk)
chunk = f.read(64 * 1024)
target.hash = hasher.hexdigest()
target.save()
显然,上述任务只在filename实际存在的情况下才相关,而且不太可能同时存在于多个节点上。
有没有办法指定给定的任务只在本地执行?
【问题讨论】: