我刚刚安装了芹菜,我想创建一个简单的状态页面,显示当前的工人数量及其状态。芹菜/ 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