Routing 芹菜路由可以用于特定主机吗?

Routing 芹菜路由可以用于特定主机吗?,routing,celery,Routing,Celery,芹菜有一个比saltstack更好的任务语言,但是它似乎缺少特定于机器的路由。是否可以将芹菜任务路由到特定的机器 编辑:假设有数百台或数千台机器,它们是动态配置(启动/停止)的。因此,没有办法预先知道机器的名称是的,只需使用默认的自动路由就非常容易了。如果希望将一个任务根放到一台特定的计算机上,只需在任务装饰器中添加一个唯一的队列名称,如下所示: # tasks.py @task(queue='my_unique_queue') def web_site_status(url): ret

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


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

是的,只需使用默认的自动路由就非常容易了。如果希望将一个任务根放到一台特定的计算机上,只需在任务装饰器中添加一个唯一的队列名称,如下所示:

# 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
所有远程框都可以“使用”一个或多个队列,因此只需使用唯一队列命名单个任务,就可以将任务分配给所有、组或单个远程框

如果您需要更多控制,还可以查看“手动传送”上的文档:


Q名称是否可以作为一个任务参数,以便为动态机器资源调配进行调整?另外,如果一台机器被终止,那么随着越来越多未使用的queu堆积起来,会不会导致代理内存泄漏?我上面发布的示例将队列名称作为任务装饰器的参数。对于动态节点资源调配,存在大量exchange和路由参数。但默认的自动路由在优雅地拾取新节点和在网络问题后重新启动等方面出人意料地出色。无法使用rabbitmq或redis对内存泄漏发表评论,我总是有多个节点消耗每个队列。我在哪里可以找到您提到的路由参数的代码示例?查看其他SO答案,正确的方法是将一个exchange与多个队列一起使用,并应用\u asyncRelated:Related: