【问题标题】:Assign a specific number of workers for each Celery task in Python在 Python 中为每个 Celery 任务分配特定数量的工人
【发布时间】:2020-09-01 10:48:13
【问题描述】:

我有三个 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

以及运行worker的命令:

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

【问题讨论】:

    标签: python celery celery-task


    【解决方案1】:

    我会这样做,因为我永远无法真正理解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 队列。

    【讨论】:

    • 谢谢,我终于做到了。
    猜你喜欢
    • 2020-12-28
    • 1970-01-01
    • 2018-10-07
    • 2013-02-18
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    相关资源
    最近更新 更多