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

Gre*_*reg 5 django amazon-sqs celery django-celery

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

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

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

小智 7

芹菜工人的文档中,它解释了inspect命令的输出.

默认情况下,使用celery.current_app.control.inspect()返回"检查器对象",允许您询问所有正在运行的工作人员的状态.例如,如果您使用名为"adder"和"sleeper"的两个正在运行的工作程序执行此代码:

    i = celery.current_app.control.inspect()
    i.registered()
Run Code Online (Sandbox Code Playgroud)

调用i.registered()可以返回如下内容:

    {
      'adder@example.com': ['tasks.add'],
      'sleeper@example.com': ['tasks.sleeptask'],
    }
Run Code Online (Sandbox Code Playgroud)

总之,"检查"的方法registered,active,scheduled等返回由时所选择的工作人员分类结果的字典celery.current_app.control.inspect()被称为(如果没有工人作为参数传递,所有工人被隐式选择).