> Faqs > Cómo aumentar el timeout de los procesos en cola con Laravel Horizon

Cómo aumentar el timeout de los procesos en cola con Laravel Horizon

Estoy trabajando con Laravel Horizon para los trabajos en cola. Ahora he encontrado un problema con un proceso que es muy largo y me hace un timeout en el servidor remoto.

El error que recibo es este:

Illuminate\Queue\MaxAttemptsExceededException: App\Jobs\GlobalUsersReportJob has been attempted too many times or run too long. 
The job may have previously timed out.

Estoy buscando el sitio donde modificar el tiempo disponible para la ejecución de los procesos de la cola en Supervisor, pero no lo veo claro. ¿Cómo puedo aumentar el timeout de los procesos en cola con Laravel Horizon?

Respuestas

La cola de procesos si estás usando Laravel Horizon se configura en uno de los archivos de configuración de Laravel:

config/horizon.php

Si no está ese archivo en tu proyecto es que no has instalado Horizon todavía. Lo deberías haber creado con este comando.

php artisan horizon:install

En ese archivo puedes encontrar la configuración de supervisor que tendrías que cambiar. Tiene esta forma:

'defaults' => [
    'supervisor-1' => [
        'connection' => 'redis',
        'queue' => ['default'],
        'balance' => 'auto',
        'maxProcesses' => 1,
        'maxTime' => 0,
        'maxJobs' => 0,
        'memory' => 128,
        'tries' => 1,
        'timeout' => 60,
        'nice' => 0,
    ],
],

El valor "timeout" está en segundos. Puedes poner lo que veas necesario para asegurar que los jobs de la cola se pueden ejecutar correctamente.

Recuerda que tendrás que reiniciar Horizon de nuevo una vez desplegado los cambios en la aplicación.

php artisan horizon:terminate

Después de hacer el horizon:terminate supervisor lo iniciará de nuevo, pero en la operación se habrá reiniciado y los cambios se habrán tenido en cuenta.

Miguel Angel
3295 146 215 17