(celery) :运行 特定工人的任务?
(celery) :Run task in a specific worker?
我在 celery 中有很多来自不同服务器的 worker,(如下图所示)
还有许多任务:
@task(name="task1")
def task1():
.......
@task(name="task2")
def task2():
......
我只想 运行 "task1" "celery@40.218testlab_website" 工人。我应该如何配置?
你可以给你的工人起不同的名字,分配每个工人在运行宁时从特定的队列中读取,又名:
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 中略有变化。
我添加的 link 中有更简单的路由器(在配置中)- 检查一下。
祝你好运
我在 celery 中有很多来自不同服务器的 worker,(如下图所示)
还有许多任务:
@task(name="task1")
def task1():
.......
@task(name="task2")
def task2():
......
我只想 运行 "task1" "celery@40.218testlab_website" 工人。我应该如何配置?
你可以给你的工人起不同的名字,分配每个工人在运行宁时从特定的队列中读取,又名:
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 中略有变化。 我添加的 link 中有更简单的路由器(在配置中)- 检查一下。
祝你好运