(芹菜):在特定工人中运行任务?

时间:2017-07-28 10:02:39

标签: celery worker celery-task

我有很多来自芹菜不同服务器的工人,(如下图所示) enter image description here

和许多任务:

@task(name="task1")
def task1():
   .......

@task(name="task2")
def task2():
   ......

我想只在“celery@40.218testlab_website”工作人员上运行“task1”。我该怎么配置?

1 个答案:

答案 0 :(得分:1)

您可以为工作人员提供不同的名称,指定每个工作人员在运行时从特定队列中读取,也就是:

celery -A tasks -n worker1 -q queue1 --loglevel=info
celery -A tasks -n worker2 -q queue2 --loglevel=info
...

而不是添加router,例如:

def route_task(name, args, kwargs, options, task=None, **kw):
        if name == 'task1':
            return 'queue1'
        elif name == 'task2':
            return 'queue2'
        return None

请注意,实施取决于您运行的芹菜版本(我使用3.1) - 它在4中略有变化。 我已添加的链接(在配置中)甚至更简单的路由器 - 检查出来。

祝你好运

相关问题