Python芹菜-通过pid查找任务

Python芹菜-通过pid查找任务,python,celery,amqp,Python,Celery,Amqp,一个非常简单的问题,也许- 我经常看到芹菜任务进程在我的系统上运行,当我使用芹菜.task.control.inspect的活动方法时,我找不到它。通常这个过程会运行几个小时,我担心这是某种僵尸。通常它也会占用很多内存 有没有办法通过linux pid查找任务?芹菜或AMPQ结果后端保存了吗 如果不是的话,有没有其他方法来确定哪个任务是正在消耗内存的任务 --更新: 当active告诉我某个特定框上没有运行任务,但该框的内存已被完全使用,并且htop显示这些工作线程池线程正在使用它,但同时使用0

一个非常简单的问题,也许- 我经常看到芹菜任务进程在我的系统上运行,当我使用芹菜.task.control.inspect的活动方法时,我找不到它。通常这个过程会运行几个小时,我担心这是某种僵尸。通常它也会占用很多内存

有没有办法通过linux pid查找任务?芹菜或AMPQ结果后端保存了吗

如果不是的话,有没有其他方法来确定哪个任务是正在消耗内存的任务

--更新:

当active告诉我某个特定框上没有运行任务,但该框的内存已被完全使用,并且htop显示这些工作线程池线程正在使用它,但同时使用0%的CPU时,我该怎么办?如果事实证明这与我当前机架空间设置的某些怪癖有关,并且没有人能回答,我仍然会接受Loren的


谢谢~

我假设“任务”是指“工人”。否则这个问题就毫无意义了

在某些情况下,了解芹菜工作池的流程层次结构很重要。工作进程池是一组工作进程或线程,它们共享同一组队列等的相同配置进程消息。。每个池都有一个管理池的父进程。此过程控制有多少童工被叉起,并负责在儿童死亡时叉起替代儿童。父进程是唯一绑定到AMQP的进程,子进程通过IPC接收并处理来自父进程的任务。父进程本身实际上并不运行任何任务

此外,为了回答您的问题,父进程是负责响应芹菜检验广播的进程,而池中列为工作者的PID只是子工作者。不包括父PID


如果使用-pidfile命令行参数启动芹菜守护进程,则该文件将包含父进程的PID,并且您应该能够将该PID与所引用的进程交叉引用,以确定它是否实际上是池父进程。如果使用Celery multi启动多个实例多个工作池,则默认情况下,PID文件应位于调用Celery multi的目录中。如果您没有使用这两种方法中的任何一种来启动芹菜,请尝试使用其中一种方法来验证该进程不是僵尸,实际上只是一个父进程。

我将假设“任务”指的是“工作者”。否则这个问题就毫无意义了

在某些情况下,了解芹菜工作池的流程层次结构很重要。工作进程池是一组工作进程或线程,它们共享同一组队列等的相同配置进程消息。。每个池都有一个管理池的父进程。此过程控制有多少童工被叉起,并负责在儿童死亡时叉起替代儿童。父进程是唯一绑定到AMQP的进程,子进程通过IPC接收并处理来自父进程的任务。父进程本身实际上并不运行任何任务

此外,为了回答您的问题,父进程是负责响应芹菜检验广播的进程,而池中列为工作者的PID只是子工作者。不包括父PID


如果使用-pidfile命令行参数启动芹菜守护进程,则该文件将包含父进程的PID,并且您应该能够将该PID与所引用的进程交叉引用,以确定它是否实际上是池父进程。如果使用Celery multi启动多个实例多个工作池,则默认情况下,PID文件应位于调用Celery multi的目录中。如果您没有使用这两种方法中的任何一种来启动芹菜,请尝试使用其中一种方法来验证该过程不是僵尸,实际上只是一个父进程。

这很有意义,谢谢。在这种情况下,我仍然可以依靠active来确定哪些任务正在泄漏。不过,这有助于我稍微重新表述我的问题-参见编辑。这很有意义,谢谢。在这种情况下,我仍然可以依靠active来确定哪些任务正在泄漏。然而,这有助于我稍微重新表述我的问题-参见编辑。