首页 文章

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

提问于
浏览
1

我有很多来自芹菜不同服务器的 Worker ,(如下图所示)

和许多任务:

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

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

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

1 回答

  • 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中略有改变 . 在我添加的链接中有更简单的路由器(在配置中) - 检查一下 .

    祝好运

相关问题