После прочтения документации Celery похоже, что я должен быть в состоянии использовать следующий код Python для перечисления задач в очереди, которые еще не были получены:
from celery.task.control import inspect
i = inspect()
tasks = i.reserved()
Однако при запуске этого кода список задач пуст, даже если в очереди ожидают элементы (я убедился, что они определенно находятся в очереди с помощью django-admin). То же самое верно для использования эквивалента командной строки:
$ celeryctl inspect reserved
Так что, я полагаю, это не то, для чего эта команда? Если нет, каков приемлемый способ получения списка задач, которые еще не начались? Нужно ли вести собственный список идентификаторов задач в коде, чтобы запрашивать их?
Причина, по которой я спрашиваю, заключается в том, что я пытаюсь справиться с ситуацией, когда в очереди стоят две задачи, которые выполняют операцию записи для одного и того же объекта в базе данных. Если обе задачи выполняются параллельно и задача 1 занимает больше времени, чем задача 2, она перезапишет выходные данные из задачи 2, но я хочу получить выходные данные из самой последней задачи, то есть задачи 2. Поэтому я планировал отменить все незавершенные задачи, которые работают с объект каждый раз, когда добавляется новая задача, которая будет записывать в тот же объект.
Спасибо
Том