Как совершается очистка очереди от задач? / Как удалить задачу из брокера?
Я хочу автоматически очищать выполненные задачи( статус и id) из очереди. Результат задачи я очищаю автоматически прописав result_expires.
Но айди и статус все еще в брокере, как это можно очистить? Использую redis в качестве брокера.
Я нашел вроде бы ответ, но там нужно самому залезать в брокер и очищать руками, хотелось бы делать это через celery.
И буду очень благодарен, если кто-нибудь объяснит, как работает весь процесс очистки мусора в celery.
Ответы (1 шт):
Всё оказалось куда проще:
во-первых, pending означает, что он не знает о задаче.
По умолчанию, задача всегда pending до SUCCESS, если не включен task_track_started.
Когда, воркер забирает задачу, он ее сразу удаляет из брокера(в моем случае redis) и хранит о ней состояние уже в backend.
Это можно просмотреть открыв redis:
redis-cli
keys *
LRange MyQueue 0 -1