为Python中的每个Celery任务分配特定数量的工作人员



我有三个Celery任务:

  • 预测
  • 培训
  • 健康检查

我在机器里有4个cpu。我想分配3名员工进行预测和培训,1名员工进行健康检查。实现这一点最简单的方法是什么?请注意,我将安排这些任务,因此,我不能直接在apply_async((函数中指定工作者的数量。

实际配置:

CELERY = Celery(
CELERY_APP_NAME,
backend=CELERY_BACKEND,
broker=CELERY_BROKER,
include=["src.tasks"],
)
CELERY.conf.update({"task_routes": {"src.tasks.*": {"queue": "input_queue"}},
}
)

@CELERY.task
def prediction():
pass
@CELERY.task
def training():
pass
@CELERY.task
def healthcheck():
pass

以及运行工作程序的命令:

celery --loglevel=INFO -A src.tasks worker -Q input_queue

我会这样做,因为我永远无法真正理解celery multi:

  • celery -A yourproject.yourapp -l info -c 3 -Q prediction
  • celery -A yourproject.yourapp -l info -c 1 -Q healthcheck

运行类似于上面的程序(使用正确的应用程序参数(后,最终会有两个工人订阅不同的队列。您的预测和训练任务将使用queue=prediction和其他命名参数触发,而健康检查任务应以类似的方式发送到healthcheck队列。

最新更新