Как в очереди задач Lumen/Laravel в Redis узнать, сколько задач передо мной?

Очередь задач хранится в Redis. Lumen / Laravel версии 6.x

Как в любой момент времени по id задачи узнать, сколько ещё задач перед ней?

В описании очередей Laravel не нашёл.
В момент создания задачи можно прочитать размер очереди через RedisQueue.size(), но как быть потом, через некоторое время?

Смотрю, когда есть задачи в очереди, появляются три ключа:
"queues:xxxxxx.queue"          LIST
"queues:xxxxxx.queue:notify"   LIST 
"queues:xxxxxx.queue:reserved" ZSET

Первый, вроде бы, хранит как раз сами задачи, сериализованные, похоже, в JSON. Можно искать id задачи в элементах этого списка. Костыльно, но пока это основной вариант.
Во втором ключе :notify хранятся одни "1" числом столько же, сколько в первом.
В третьем :reserved, похоже, хранится выполняемая в настоящий момент задача.
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Nc_Soft
Можно узнать через LLEN сколько всего элементов в очереди в любое время. Если очереди в один поток последовательно разгребаются, то возможно вычислить позицию задачи зная сколько всего было создано/завершено, а вот если нет, то только ковыряясь в очередях.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы