簡體   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