#laravel #queue #horizon
#laravel #очередь #горизонт
Вопрос:
У меня есть конфигурация супервизора Laravel Horizon, которая поддерживает один процесс. Однако я не могу заставить этот процесс запускать только одно задание за раз. Конфигурация для этого
'long-running-supervisor' => [
'connection' => 'redis-long-running',
'queue' => ['default_long'],
'balance' => 'simple',
'processes' => 1,
'tries' => 1,
'timeout' => 720
],
Однако этот процесс default_long перекрывает задания одновременно, а не ждет завершения одного перед запуском другого.
Вывод Horizon (отредактирован для краткости)
WaistPredictionJob 8039
Queue: default_long | Tags: AppPrediction:620 2020-10-17 19:49:45 29.20s
WaistPredictionJob 8049
Queue: default_long | Tags: AppPrediction:621 2020-10-17 19:50:11 29.08s
PredictionCompleted 8051
Queue: default | Tags: AppPrediction:620 2020-10-17 19:50:16 0.03s
WaistPredictionJob 8054
Queue: default_long | Tags: AppPrediction:622 2020-10-17 19:50:17 25.77s
PredictionCompleted 8064
Queue: default | Tags: AppPrediction:621 2020-10-17 19:50:46 0.16s
PredictionCompleted 8074
Queue: default | Tags: AppPrediction:622 2020-10-17 19:51:11 0.03s
Ответ №1:
Я понял это.
Я ошибочно думал, что временные метки относятся к моменту завершения заданий, когда на самом деле они представляют, когда задания были поставлены в очередь.
Если вы просмотрите временные метки PredictionCompleted
заданий, вы заметите, что WaistPrediciton
задания фактически выполняются одно за другим.