Celery 在指定 taskid 之前检查待处理的任务数

Sto*_*orm 5 python rabbitmq celery

celery 是否支持在给定任务 id 之前返回待处理的任务编号?

例如,没有 celery worker 启动,我推送 task1、task2、task3,三个都挂了,现在,我想要的是,如果我给 task3,它告诉我在 3 之前有 2 个挂起的任务。

我使用 celery celery 4.1,rabbitmq 3.5.4 作为代理,redis 3.2.9 作为结果后端。

虽然我可以通过管理 API(例如 pyrabbit 包中的 get_queue_depth )获取兔子队列深度,但这会导致整个队列深度,而不是指定任务 id 之前的待处理数。

而且我知道我可以自己维护一个队列来管理推送的任务 ID。

但我想知道芹菜或rabbitmq本身是否有任何简单的方法。

谢谢。

Ita*_*ayB 1

我不确定它是否回答您的问题,但有控制客户端可以帮助您检查reserved任务、active任务等。

i = app.control.inspect()
i.reserved()

#output:
[{'worker1.example.com':
    [{'name': 'tasks.sleeptask',
      'id': '32666e9b-809c-41fa-8e93-5ae0c80afbbf',
      'args': '(8,)',
      'kwargs': '{}'}]}]
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息:http://docs.celeryproject.org/en/latest/userguide/workers.html#dump-of-reserved-tasks

您还可以从命令行监控/检查:http://docs.celeryproject.org/en/latest/userguide/monitoring.html#commands