繁体   English   中英

如何分析 celery 任务的 memory 使用情况?

[英]how to profile memory usage of a celery task?

我有一个 django 应用程序,它使用 celery 库运行后台任务,我需要获取并存储任务的最大 memory 使用量。

我已经尝试了 memory_profiler 库中的 memory_usage,但我无法在任务中使用这个 function,因为我收到错误:“不允许有子进程的守护进程”。 我还尝试了任务外的 memory_usage function 来监视 task.async 调用,但由于某种原因,该任务被触发了两次。

我在那里发现的所有其他方法包括检查代码不同位置的 memory 使用情况,然后获得最大值,但我觉得它非常不准确,可能有些调用的 memory 使用率很高在我设法检查当前的 memory 使用情况之前,因为垃圾收集而被遗漏了。

官方文档有一些有用的功能,但它必须依赖于上面的方法。 https://docs.celeryproject.org/en/latest/reference/celery.utils.debug.html

提前致谢!

为什么不是controller任务?

Celery 基础设施让我们查询所有工作人员的当前状态:

from celery import Celery
app = Celery(...)
app.control.inspect().active()

这可以在任务中使用,每 # 秒轮询一次集群并了解正在发生的事情。 我使用了类似的方法在任务之间识别和发送kill()命令。 我的任务是可杀的,所以他们每个人都知道如何处理软杀。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM