【问题标题】:Does the number of celeryd processes depend on the --concurrency setting?celeryd 进程的数量是否取决于 --concurrency 设置?
【发布时间】:2012-08-01 09:07:35
【问题描述】:

我们在 Supervisor 后面运行 Celery 并启动它

celeryd --events --loglevel=INFO --concurrency=2

然而,这会创建一个最多三层深度的进程图,并包含最多 7 个 celeryd 进程(Supervisor 产生一个 celeryd,它产生几个其他的 celeryd,它再次产生进程)。我们的机器有两个 CPU 内核。

所有这些流程都在执行任务吗?也许其中一些只是工作人员池? --concurrency 设置如何与实际产生的进程数相关联?

【问题讨论】:

    标签: python concurrency celery celeryd


    【解决方案1】:

    如果--concurrency 为 2,则不应有 7 个进程。

    实际启动的进程是:

    • 主要消费者进程

      将工作委托给工作池

    • 工作池(这是--concurrency决定的数字)

    所以这是 3 个进程,两个并发。

    此外,还启动了一个用于清理信号量的非常轻量级的进程 如果启用了 force_execv (默认情况下,我正在使用其他传输 比redis或rabbitmq)。

    请注意,在某些情况下,进程列表还包括线程。 如果使用 rabbitmq/redis 以外的传输,worker 可能会启动多个线程, 包括一个始终启动的调解器线程,除非启用了CELERY_DISABLE_RATE_LIMITS

    【讨论】:

    • 这与我的经验不符。我有--concurrency=1 --beat,但产生了 4 个 celeryd 进程。
    • 我使用 DatabaseTransport 和 Celery 3.0,使用 --concurrencry=1 我得到 6 个进程,类似于 OP 案例。
    • @asksol 当 --concurrency=1 和两个工人时,我也经历了 4 个 celeryd procs。我很好奇为什么会这样,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多