Rabbitmq 仅本地消息队列?
我在用芹菜配兔子 对于我的用例,我肯定会有一些实例,在这些实例中,应该在任何给定的节点上执行消息,但是对于一个特定的队列,我只需要在原始服务器上执行。这是因为它仅适用于本地文件:Rabbitmq 仅本地消息队列?,rabbitmq,celery,Rabbitmq,Celery,我在用芹菜配兔子 对于我的用例,我肯定会有一些实例,在这些实例中,应该在任何给定的节点上执行消息,但是对于一个特定的队列,我只需要在原始服务器上执行。这是因为它仅适用于本地文件: @celery.task def calculate_hash(filename): target = Models.objects.get(filename=filename) hasher = hashlib.md5() with open(filename, "rb") as f:
@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
相关,并且不可能同时存在于多个节点上
有没有办法指定只在本地执行给定的任务?基本上,如果我正确理解您的问题,您应该让一个特定的工作人员从一个特定的队列中读取 首先,您可以将队列配置为在
celeryd
级别上使用,例如,使用--queues
选项启动队列:
celeryd --queues=celery,queue1.mydomain.com
然后,要将任务发送到特定队列,可以通过设置queue
参数来使用
另见:
希望有帮助