Celery / Django - 如何以编程方式查看工人的状态

时间:2016-03-28 14:33:48

标签: django celery django-celery amazon-sqs

我刚刚安装了Celery,我想创建一个简单的状态页面,显示当前的工作人员数量及其状态。

这可能吗?从网络搜索中我发现的最好的是celery.current_app.control.inspect()

但据我所知,它没有提及任何有关工人的事情。 (如果重要的话,我正在使用Kombu和SQS作为后端)

1 个答案:

答案 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'],
    }

总之,“检查员”方法registeredactivescheduled等会返回一个字典,其结果由celery.current_app.control.inspect()被调用时所选择的工作人员分类(如果没有工人作为参数传递,则隐式选择所有工人。)