我剛剛安裝了芹菜,我想創建一個簡單的狀態頁面,顯示當前的工人數量及其狀態。芹菜/ Django - 如何以編程方式查看工人狀態
這可能嗎?從網絡搜索我發現最好的是celery.current_app.control.inspect()
但據我所知,它沒有提到關於工人的任何事情。 (如果有問題,我使用Kombu和SQS作爲後端)
我剛剛安裝了芹菜,我想創建一個簡單的狀態頁面,顯示當前的工人數量及其狀態。芹菜/ Django - 如何以編程方式查看工人狀態
這可能嗎?從網絡搜索我發現最好的是celery.current_app.control.inspect()
但據我所知,它沒有提到關於工人的任何事情。 (如果有問題,我使用Kombu和SQS作爲後端)
在the documentation of celery workers中說明了inspect
命令的輸出。
默認情況下,使用celery.current_app.control.inspect()
返回一個「檢查器對象」,它允許您詢問所有正在運行的工人的狀態。
i = celery.current_app.control.inspect()
i.registered()
調用i.registered()
可以返回類似:
{
'[email protected]': ['tasks.add'],
'[email protected]': ['tasks.sleeptask'],
}
總之,「檢查」例如,如果你有一個名爲「加法」和「臥鋪」兩場倒的工人執行該代碼方法registered
,active
,scheduled
等返回一個字典,其結果是調用celery.current_app.control.inspect()
時選擇的工人分類的結果(如果沒有工人作爲參數傳遞,則隱式選擇所有工人)。
看起來很有希望。奇怪的是,當我打電話時,我得到一個SQS認證錯誤。即使我的應用程序和工作人員可以正常連接。也許這個調用需要額外的SQS隊列權限? – Greg
以下是錯誤:SQSError:SQSError:403 Forbidden <?xml version =「1.0」?>AccessDenied
似乎它可能不被支持:SQS尚不支持工人遠程控制命令(http://docs.celeryproject.org/en /latest/getting-started/brokers/sqs.html#caveats)。 –
爲什麼不使用https://github.com/mher/flower?即使官方的芹菜文檔推薦它(http://docs.celeryproject.org/en/latest/userguide/monitoring.html?highlight=flower#flower-real-time-celery-web-monitor)。 –
花看起來不錯,但對於我的海豚,我需要將其插入內部系統健康檢查。所以我需要以編程方式進行。 – Greg
然後你需要延長花。 – TheGreenGoblen