Очереди и проверка выполнения Job-ов

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
duda
Сообщения: 43
Зарегистрирован: 2015.07.06, 22:05

Очереди и проверка выполнения Job-ов

Сообщение duda »

Приветствую.

Возникла такая проблема.
Есть очередь с несколькими воркерами.
В очередь попадает задача которая выполняется в районе 2х минут. (Задача #1)
Параллельно выполняется другая задача (Задача #2) которая проверяет выполнение (Задача #1).

Проблема в том что первый Job еще не завершен, то есть Started но еще не Done, а проверка Yii::$app->queue->isDone($id) в (Задача #2) возвращает true хотя Job только стартовал но не завершен.

Как запустить Job после выполнения всех остальных задача? Например:
Создать 100 страниц pdf по 1ой странице в каждом Job и в итоге после завершения всех задача (100) в 101 задаче сделать суммирующий Job?

Сейчас все что летит в очередь возвращает id и передается в финальный Job который проверяет статус выполнения по id. Перезапускается если еще не все выполнено. Но выше описанная проблема все ломает.
Аватара пользователя
Ghost_nsk
Сообщения: 825
Зарегистрирован: 2012.01.01, 00:45
Откуда: Новосибирск
Контактная информация:

Re: Очереди и проверка выполнения Job-ов

Сообщение Ghost_nsk »

возможно имеет смысл перенести часть логики по заданиям в отдельную табличку в базе и там проверять статусы выполнения всех относящихся к одному документу заданий (а не через Yii::$app->queue), если все задачи выполнены, то тогда запускаем результирующую задачу
Ответить