[英]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.