【发布时间】:2015-04-01 09:22:12
【问题描述】:
我正在尝试监控 celery 队列,以便如果队列中没有任务增加,我可以选择生成更多的 worker。
无论有没有 Flower(芹菜监控工具),我如何做到这一点
例如:我可以得到一个这样的所有工人的列表
curl -X GET http://localhost:5555/api/workers
{
"celery@ip-172-0-0-1": {
"status": true,
"queues": [
"tasks"
],
"running_tasks": 0,
"completed_tasks": 0,
"concurrency": 1
},
"celery@ip-172-0-0-2": {
"status": true,
"queues": [
"tasks"
],
"running_tasks": 0,
"completed_tasks": 5,
"concurrency": 1
},
"celery@ip-172-0-0-3": {
"status": true,
"queues": [
"tasks"
],
"running_tasks": 0,
"completed_tasks": 5,
"concurrency": 1
}
}
类似地,我需要一个按队列名称挂起的任务列表,以便我可以在该队列上启动一个工作人员。
感谢您没有否决这个问题。
【问题讨论】:
-
我认为 Celery 的自动缩放选项正是您想要的:celery.readthedocs.org/en/latest/internals/reference/…
-
抱歉,我不是在寻找 AutoScale,我正在寻找一种方法来找出按队列分组的 celery 中有多少待处理的作业。
-
试试inspect().reserved()。请参阅对此答案的评论:stackoverflow.com/a/9369466/1213425。但是,您在此问题中的第一句话建议您在任务数量超过一定数量时手动扩展您的工作池......不知道为什么要手动执行 celery 可以自动实现的功能...... ...? Flower还可以告诉你队列中有多少任务.....
-
另外,如果您不需要知道任务是什么,您可以从您的代理处获取队列的长度,并使用该统计数据来决定扩大/缩小规模......
-
@Erve1879 将尝试“您的经纪人的队列长度”方法。 celery 自动缩放的作用是增加并发性。但我想水平缩放,即。我想用同一个工人产生更多的盒子。