Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 06.09.2021 13:28:10

Долгоиграющие задания в очереди.

Всем доброго дня.
А вот такая заковыка:
Есть задание в очереди.
Работать может долго. Несколько десятков минут, условно можно считать, вплоть до часа.
Задирать время выполнения видится не очень хорошим решением.

Внутри джоба работает так, что есть возможность, отработав какую-то часть задачи, рестартануть.

Вопрос: а как внутри джобы  рестартануть саму себя?

Не в сети

#2 06.09.2021 14:52:05

Re: Долгоиграющие задания в очереди.

а если подробить на мелькие задачи\этапы?
вот основная задача выполнила какие-то манипуляции и наплодила следующие задачи, те в свою очередь выполнили свой этап обработки и создают новую задачу для следующего этапа

простой пример:
1я задача получила список сотрудников кому надо выплатить зарплату и создала для каждого свою задачу "выдача зарплаты сотруднику №1..№2...".
задача зарплаты начислила деньги сотруднику и создала задачу "оплатить налоги" и возможно задачу "внести в отчёт"
и т.д.

Изменено Eskono (06.09.2021 14:55:33)

Не в сети

#3 06.09.2021 18:46:31

Re: Долгоиграющие задания в очереди.

Предложение разбить логику не катит.
В терминах вашего предложения, уже всё посчитано, мне в задаче нужно просто перечислить условному мильёну сотрудников известную сумму.

Решение нашлось.
Могло бы найтись быстрее, если бы не странный нейминг искомого метода.
https://laravel.com/docs/8.x/queues#man … sing-a-job

Не в сети

#4 07.09.2021 09:54:51

Re: Долгоиграющие задания в очереди.

а почему бы не нарезать 1000 задач с пачкой по 1000 сотрудников? тогда не надо будет костыли с рестартом джобы городить. И если отвалится с ошибкой одна задача, то другие выполнятся, что не скажешь с уверенностью о рестарте джобы(до рестарта может и не дойти код)

Не в сети

#5 07.09.2021 10:01:29

Re: Долгоиграющие задания в очереди.

А как нарезать по 1000?
Есть мильён записей рассчитанных выплат.
На то, что айди у них строго последовательные, естественно, не заложишься - параллельно может рассчитываться несколько таких батчей по мильёну, и перемешивать выплаты нескольких батчей в одном задании нельзя.

Не в сети

Подвал раздела