Celery路由可以用于特定主机吗?

时间:2013-05-24 00:51:54

标签: routing celery

Celery比saltstack具有更好的任务语言,但它似乎缺乏特定于机器的路由。是否可以将Celery任务路由到特定机器?

编辑:假设有数百或数千台机器,它们是动态配置(启动/停止)的。因此,无法提前知道机器的名称

1 个答案:

答案 0 :(得分:0)

是的,只有默认的自动路由,这非常简单。如果您希望将1个任务植根到一个特定的计算机,只需在任务装饰器中添加一个唯一的队列名称,如下所示:

# tasks.py
@task(queue='my_unique_queue')
def web_site_status(url):
    return requests.get(url).status_code

然后使用远程框,只需包含在启动celeryd / workers时要使用的队列名称。

$ python manage.py celeryd -l info -Q my_unique_queue

所有远程框都可以“使用”一个或多个队列,因此只需使用唯一队列命名单个任务,您就可以将任务分配给所有,组或单个远程框。

如果您需要更多控制权,还可以查看@“手动路由”文档:

http://docs.celeryproject.org/en/latest/userguide/routing.html#manual-routing