在芹菜中指定工人



我有两个工人:

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 启动这些芹菜工人,我根据文档使用鲜花:

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

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

如何指定或设置此项,以便选择要用于add任务的工作人员?如果你有一个使用另一个没有花的 API 的解决方案,那也将起作用。

实现此目的的最简单方法是使用单独的队列。 使用 -Q first_worker,celery 启动工作线程,用 -Q second_worker,celery 启动第二个代理。 celerycelery 中的默认队列名称。

现在,当您只想将任务发送给第一个工作人员时,您可以使用 celery 的task_routes设置将任务路由到first_worker队列。 您可以对称地处理second_worker队列的路由任务。 您还可以在使用 apply_async 时手动将特定任务调用路由到某个队列,例如:

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

注意,最后我检查了一下,花只会监控你的一个队列(默认情况下是芹菜队列)。

相关内容

  • 没有找到相关文章

最新更新