指定芹菜中的工人

时间:2019-01-30 23:41:26

标签: python celery flower

我有两个工人:

celery worker -l info --concurrency=2 -A o_broker -n main_worker
celery worker -l info --concurrency=2 -A o_broker -n second_worker

我正在用flower监视和接收这些工人的API请求:

flower -A o_broker

要通过API启动这些芹菜工作者,我会按照docs使用鲜花:

curl -X POST -d '{"args":[1,2]}' 'http://localhost:5555/api/task/async-apply/o_broker.add'

但是,通过此POST请求,它在任一工作线程上运行任务。我需要选择运行特定的代理来完成任务。

如何指定或设置它,以便选择要用于add任务的工作程序?如果您有使用不带花的其他API的解决方案,那也可以。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用单独的队列。从-Q first_worker,celery开始worker,从-Q second_worker,celery开始第二个代理。 celerycelery中的默认队列名称。

现在,当你想要一个任务发送到只是第一个工人,你可以路由任务使用first_worker队列芹菜的task_routes setting。您将路由任务对称地处理到second_worker队列中。您还可以在使用apply_asyncmanually route特定任务调用到特定队列,例如:

add.apply_async(args=(1, 2), queue='first_worker')

n.b。,最后我检查了一下,flower只监视您的一个队列(默认情况下是芹菜队列)。