celery + redis + flask 如何获取 celery 等待执行的作业数量

celery + redis + flask how to get the quantity of jobs await to execute by celery

我用的是docker到运行celery+redis+flask,想知道celery有多少任务在等待执行。我试图用命令

在 redis 中查找信息
keys *

我得到结果:

127.0.0.1:6379> keys *
1) "unacked_mutex"
2) "_kombu.binding.celeryev"
3) "unacked_index"
4) "_kombu.binding.celery.pidbox"
5) "_kombu.binding.celery"
6) "unacked"

这些项目似乎都不包含芹菜队列信息。如何读取芹菜队列大小?

这是芹菜代码:

from celery import Celery
import time
app = Celery('tasks', broker='redis://redis:6379')
@app.task
def sleeptest():
    time.sleep(100)

这是我提交 celery 作业的方式:

import tasks
import time

tasks.sleeptest.delay()
time.sleep(1)
tasks.sleeptest.delay()
time.sleep(1)
tasks.sleeptest.delay()
time.sleep(1)
tasks.sleeptest.delay()
time.sleep(1)
tasks.sleeptest.delay()
time.sleep(1)

当我post100个任务时,出现celery队列。但是当我 post 只有 5 个任务时,芹菜队列不显示,即使我将并发设置为 1 和 4 个任务实际上正在等待。

信息深埋在 Celery 文档中 - monitoring redis queues. If you see nothing, that means that the tasks are either finished, running or already reserved (look for details about the worker_prefetch_multiplier)。