Есть ли способ передать аргументы планированию заданий в очереди в laravel? - PullRequest
0 голосов
/ 30 октября 2019

Мне нужно выполнить задание в очереди, что занимает много времени (около 2 часов). Он проверяет наличие определенной услуги. Поэтому вместо того, чтобы выполнять одно задание в течение двух часов, которое постоянно (каждую минуту) делает запрос API, я подумал использовать планирование laravel для заданий в очереди . Я мог вызвать планировщик из любого места через Artisan helper:

Artisan::call('schedule:run', [
   'args' => $args
]);

, который бы отправил работу. Но не могу понять, как я могу передать аргументы ($ arg1, $ arg2, ..) в kernel.php, что требуется для моего файла задания.

// Dispatch the job to the "heartbeats" queue...
$schedule->job(new Heartbeat($arg1, $arg2, ..), 'heartbeats')->everyFiveMinutes();

Я пытался передать аргументы в методе расписания, но, полагаю, это неправильный способ сделать это.

1 Ответ

0 голосов
/ 30 октября 2019
  1. Сделайте команду ремесленника. Например:

    php artisan make:command DispatchJobFromDynamicCalculatedArg

  2. Вычислите $ args сколько хотите внутри этой команды ремесленника.

  3. Отправьте целевое задание с аргументами, которые на самом деле содержат нужные вам процессы.
  4. Запланируйте указанную выше команду ремесленника в файле Kernel.php.

Вот и все.

...