Laravel 5.2 — Создание API заданий

#laravel #task-queue

#laravel #очередь задач

Вопрос:

Итак, в моем API есть несколько мест, где выполняется процесс / отчет, который либо истекает по таймауту, либо просто занимает слишком много времени. Я хотел бы отложить эти задания в очередь и вместо этого вернуть ключ в моем ответе. Затем интерфейс будет пинговать службу, используя этот ключ, чтобы определить статус ее конкретного задания в очереди. Таким образом, у нас не будет зависания вызовов ajax в течение 2-3 минут. Возможно, я мог бы даже создать средство просмотра очередей, которое позволило бы вам просматривать задания в нем и даже отменять некоторые и т. Д.

Есть ли в Laravel что-то встроенное или для этого уже есть пакет? Существуют ли другие лучшие варианты решения такого рода проблем?

Комментарии:

1. Комбинация laravel.com/docs/5.3/queues и laravel.com/docs/5.3/broadcasting скорее всего, подойдет.

2. за исключением того, что я использую 5.2, в котором нет трансляции 🙂

3. Конечно, это так. laravel.com/docs/5.2/events#broadcasting-events

4. Я думаю, это может сработать. Я больше искал способ получить пинг интерфейса и получить статус. У меня возникает идея протолкнуть сокет …. возможно, стоит изучить.

5. Возможность проверки статуса будет зависеть от используемого вами драйвера очереди и того, что поддерживает базовый API. Я не думаю, что вы могли бы сделать это, например, с помощью драйвера SQS. Лучше использовать широковещательную передачу — пусть работник очереди транслирует события, когда он начинает работу, события выполнения во время работы и события завершения по завершении.

Ответ №1:

это то, что вы используете для очередей laravels

Комментарии:

1. Нет, это позволит мне помещать вещи в очередь, но это не помогает мне проверять, что находится в очереди, чтобы узнать статус выполняемого задания.

Ответ №2:

Я не верю, что это существовало, когда я впервые опубликовал этот вопрос. Однако теперь в Laravel для этого создано следующее: https://laravel.com/docs/5.6/horizon это все, что я искал.