Ещё одна откровенная тупость в Laravel Horizon — по-умолчанию все задачи выполняющиеся более 60 секунд просто обрываются без какого-либо уведомления или сообщения об ошибке. И чтобы решить эту проблему, нужно воспользоваться парой недокументированных опций в конфигурационном файле. Ниже расскажу как установить более адекватный таймаут для выполнения задач в Laravel Horizon.
В файле config/horizon.php нужно добавить значение timeout:
'environments' => [ 'production' => [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['default'], 'balance' => 'simple', 'processes' => 10, 'tries' => 3, 'timeout' => 43200, ], ], 'local' => [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['default'], 'balance' => 'simple', 'processes' => 2, 'tries' => 3, 'timeout' => 43200, ], ], ],
А в файле config/queue.php увеличить значение redis -> retry_after:
'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'retry_after' => 43260, 'block_for' => null, ],
Однако, как включить уведомление об обрыве выполнения задачи по таймауту — не понятно.