【问题标题】:(celery) :Run task in a specific worker?(芹菜):在特定工人中运行任务?
【发布时间】:2017-07-28 10:02:39
【问题描述】:

我有很多来自不同服务器的芹菜工人,(下图显示)

还有很多任务:

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

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

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

【问题讨论】:

标签: celery worker celery-task


【解决方案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

注意,实现取决于您运行的 celery 版本(我使用的是 3.1) - 它在 4 中略有变化。 在我添加的链接中(配置中)还有更简单的路由器 - 看看这个。

祝你好运

【讨论】:

  • 太好了,非常感谢@itayB
猜你喜欢
  • 2020-10-07
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 2019-02-26
  • 2012-08-17
  • 1970-01-01
  • 2011-12-29
  • 2021-02-21
相关资源
最近更新 更多