Ещё одна откровенная тупость в 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,
],
Однако, как включить уведомление об обрыве выполнения задачи по таймауту — не понятно.