Задержка повторных попыток очереди Laravel

Я создаю большое приложение с использованием Laravel и нахожу использование очереди в этом приложении. Сейчас я использую для этого сервис beanstalkd. Тем не менее, я застрял в поиске ответа для этой настройки. Есть ли способ сделать так, чтобы повторные попытки очереди обрабатывались не мгновенно. Я хотел, чтобы это было повторено через n секунд. Спасибо


person jellyfication    schedule 06.05.2015    source источник


Ответы (2)


Попробуйте использовать встроенный сервис Queue и используйте следующее

Queue::later(Carbon::now()->addMinutes(1), $task);

Соответствующие документы

person Scopey    schedule 06.05.2015
comment
Возможно ли реализовать это для повторных попыток? @scopey - person jellyfication; 06.05.2015
comment
Возможно, удастся подключиться к хуку failing и выполнить пользовательскую повторную попытку. Кроме того, установка флага --delay для вашего обработчика очереди приводит к неоднозначной задержке. Не совсем уверен, что в противном случае есть установленный способ отложить определенные повторные попытки. - person Scopey; 06.05.2015
comment
Я просто пытаюсь отправить электронные письма (и ожидаю, что они потерпят неудачу), используя две следующие команды в Laravel 4.2: php artisan queue:work --daemon --tries=3 --sleep=60 против php artisan queue:work --daemon --tries=3 --sleep=5 --delay=10, и я могу подтвердить, что с помощью второй команды повторные попытки были предприняты после 10-секундной задержки, а не немедленно ( что было в случае, когда я использовал первую команду). - person Pierre; 10.06.2015

Чтобы отложить следующую попытку, просто добавьте --delay=[NUM_OF_SECONDS] к своей команде.

Например, чтобы подождать 30 секунд перед повторной попыткой после сбоя, просто запустите: php artisan queue:work tries=3 --delay=30

person Jeremy    schedule 30.10.2019