我们在Supervisor后面运行Celery并以
启动它celeryd --events --loglevel=INFO --concurrency=2
但是,这会创建一个最多三层深度的流程图,最多包含7个芹菜进程(Supervisor会产生一个celeryd,产生其他几个,再次产生进程)。我们的机器有两个CPU核心。
所有这些流程都在处理任务吗?也许其中一些只是工人池? --concurrency设置如何与实际生成的进程数相关联?
答案 0 :(得分:4)
如果--concurrency
为2,则不应该有7个进程。
实际开始的过程是:
主要的消费者流程
代表工作到工作人员库
工作人员池(这是--concurrency
决定的数字)
这是3个并发为2的进程。
此外,还启动了一个用于清理信号量的非常轻量级的过程 如果启用了force_execv(默认情况下,我正在使用其他一些传输 比redis或rabbitmq)。
请注意,在某些情况下,流程列表还包含线程。
如果使用rabbitmq / redis以外的传输,worker可以启动多个线程,
包括一个始终启动的Mediator线程,除非启用CELERY_DISABLE_RATE_LIMITS
。