我刚刚安装了Celery,我想创建一个简单的状态页面,显示当前的工作人员数量及其状态。
这可能吗?从网络搜索中我发现的最好的是celery.current_app.control.inspect()
但据我所知,它没有提及任何有关工人的事情。 (如果重要的话,我正在使用Kombu和SQS作为后端)
答案 0 :(得分:7)
在the documentation of celery workers中解释了inspect
命令的输出。
默认情况下,使用celery.current_app.control.inspect()
会返回一个“检查器对象”,它允许您询问所有正在运行的工作人员的状态。例如,如果您使用名为“adder”和“sleeper”的两个正在运行的工作程序执行此代码:
i = celery.current_app.control.inspect()
i.registered()
对i.registered()
的调用可能会返回如下内容:
{
'adder@example.com': ['tasks.add'],
'sleeper@example.com': ['tasks.sleeptask'],
}
总之,“检查员”方法registered
,active
,scheduled
等会返回一个字典,其结果由celery.current_app.control.inspect()
被调用时所选择的工作人员分类(如果没有工人作为参数传递,则隐式选择所有工人。)