1

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

编辑:假设有数百或数千台机器,它们是动态配置(启动/停止)的。所以没有办法提前知道机器的名字

4

1 回答 1

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

于 2013-05-24T04:07:28.317 回答