Laravel Horizon: выполнение задач с продолжительностью более 60 секунд

Ещё одна откровенная тупость в 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,
        ],

Однако, как включить уведомление об обрыве выполнения задачи по таймауту — не понятно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *