programing

Larabel 대기열 프로세스 시간 초과 오류

copyandpastes 2023. 1. 2. 23:12
반응형

Larabel 대기열 프로세스 시간 초과 오류

난 라라벨에서php artisan queue:listen큐잉된 작업을 실행합니다.이러한 작업 중 하나가 상당히 복잡하고 시간이 오래 걸리기 때문에 다음과 같은 오류가 발생합니다.

[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.

내가 도망칠 수 있다는 걸 알아queue:listen타임아웃 값은 임의로 높지만 실제로는 응답이 없는 프로세스가 있는 경우에는 타임아웃을 하고 싶기 때문에 이상적이지는 않습니다.나는 정기적으로 전화를 걸려고 했다.set_time_limit(60)직장이 호출하는 함수에 포함되지만, 그것은 나의 문제를 해결하지 못했다.

온라인상에서 실마리를 찾았는데Symfony\Component\Process\Process->setTimeout(null)그러나 프로세스 오브젝트에 액세스하는 방법을 알 수 없습니다.이렇게 하면 문제가 해결될지 알 수 없습니다.

어떤 도움이라도 주시면 감사하겠습니다.

추가 중--timeout=0날 위해 일했어

업데이트: 따라서 전체 명령어는 다음과 같습니다.php artisan queue:listen --timeout=0.

이게 도움이 됐으면 좋겠다.

많은 시간을 투자하고 난 후에 해결책을 얻었다.

작업 클래스에 아래 줄을 추가하면 작업을 crontab 항목에 넣어도 시간 초과 없이 작업이 실행됩니다.

public $timeout = 0;

이것은 Laravel v5.3에서 알려진 오류입니다.

이 문제를 해결하려면 v5.5로 업그레이드해야 합니다.

또 다른 방법은 여기에 설명된 소스 코드를 해킹하는 것입니다.

큐는 주로 백그라운드에서 실행되는 일괄 링크 메일 발송, Import 데이터 큐 작업 등을 수행하는 데 시간이 많이 걸리는 요구에 대해 수행됩니다.성능도 향상됩니다.타임아웃을 설정하지 않으면 기본 60초가 소요됩니다.타임아웃을 0으로 설정하면 요청이 완료되지 않을 때까지 무한 타임아웃이 계속 실행됩니다.타임아웃을 설정하려면 다음 명령을 실행해야 합니다: php artisan queue: listen --listen=0

다음은 공식 문서의 참조 링크입니다.https://laravel.com/docs/8.x/queues

언급URL : https://stackoverflow.com/questions/25877752/laravel-queue-process-timeout-error

반응형