Sono su Laravel utilizzando php artisan queue:listen
per eseguire lavori in coda. Uno di questi posti di lavoro è abbastanza coinvolto e richiede molto tempo, e così sto ottenendo il seguente errore:Errore di timeout del processo di coda di laravel
[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process ""/usr/local/Cellar/php55/5.5.14/bin/php" artisan queue:work
--queue="QUEUE_URL" --delay=0 --memory=128 --sleep=3 --tries=0"
exceeded the timeout of 60 seconds.
So che avrei potuto correre queue:listen
con un valore arbitrariamente elevato di timeout, ma che non è l'ideale, come I do desidera che scada nel caso in cui un processo sia in realtà non rispondente. Ho provato a chiamare regolarmente set_time_limit(60)
all'interno della funzione chiamata dal lavoro, ma questo non risolveva il mio problema.
Ho trovato un thread in linea che menziona Symfony\Component\Process\Process->setTimeout(null)
, ma non so come accedere a tale processo oggetto, o se questo potrebbe anche risolvere il problema.
Qualsiasi aiuto sarebbe molto apprezzato.
Hai provato coda php artigianale: ascolta --timeout = 120. Non vedo alcuna necessità di reinventare la ruota se hai solo bisogno di estendere il tempo che la tua coda deve correre. Se è necessario più di 5 minuti circa, potrebbe essere necessario pubblicare il metodo effettivo che gestisce i lavori in coda. – mschuett
Come ho detto, coda: listen --timeout = {number} funziona, ma il particolare compito che sto eseguendo potrebbe richiedere da pochi secondi a un'ora o più, e non voglio mettere un ridicolo alto valore di timeout. –
cosa causa la varianza? questo è un problema con il modo in cui la tua applicazione è strutturata. Per aiutare con questo problema, dobbiamo vedere il codice in modo da poter ottimizzare al meglio i casi quando devi analizzare molti dati. Questo deve essere suddiviso in più posti di lavoro. – mschuett