我正在开发一个 celery 监控工具。为此,我正在记录来自
celery.events.receiver.EventReceiver
的事件。
正在发送的数据如下所示(为简洁起见,删除了不必要的信息)
{... "pid": 26342, "type": "task-received", ...}
{... "pid": 26342, "type": "task-started", ...}
现在,问题是运行代码的实际工作池进程具有 pid
26391
。 pid 26342是父worker的。
我的问题是,这是一个错误还是出于监控目的而故意?如果是故意的,谁能解释一下原因吗?
注意:使用默认预分叉池。
通常情况下,我会期望池进程 pid 而不是父进程 pid。
主 Celery 工作进程管理工作进程,所以基本上主工作进程就是您所说的“池进程”。