芹菜是否支持在给定的任务ID之前返回待处理的任务编号?
例如,如果没有celery worker启动,我会推送task1,task2,task3,这三个都处于挂起状态,现在,我想要的是,如果我给task3,它告诉我3之前有2个挂起的任务。
我使用celery芹菜4.1,rabbitmq 3.5.4作为经纪人,redis 3.2.9作为结果后端。
虽然我可以通过管理API获取兔子队列深度(例如来自pyrabbit包的get_queue_depth),但这会导致整个队列深度,而不是指定任务ID之前的挂号。
而且我知道我可以自己维护一个队列来管理推送的任务ID。
但我想,如果芹菜或兔子本身有任何简单的方法。
感谢。
答案 0 :(得分:1)
我不确定它是否回答了您的问题,但有control client可以帮助您检查reserved
任务,active
任务等等。
i = app.control.inspect()
i.reserved()
#output:
[{'worker1.example.com':
[{'name': 'tasks.sleeptask',
'id': '32666e9b-809c-41fa-8e93-5ae0c80afbbf',
'args': '(8,)',
'kwargs': '{}'}]}]
了解更多信息:http://docs.celeryproject.org/en/latest/userguide/workers.html#dump-of-reserved-tasks
您还可以从命令行监视/检查:http://docs.celeryproject.org/en/latest/userguide/monitoring.html#commands