Celery比saltstack具有更好的任务语言,但它似乎缺乏特定于机器的路由。是否可以将Celery任务路由到特定机器?
编辑:假设有数百或数千台机器,它们是动态配置(启动/停止)的。因此,无法提前知道机器的名称
答案 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