У меня проблема с laravel длительным процессом, который добавлен в очередь. Использование драйвера базы данных и супервизора. Проблема в том, что после того, как рабочий № 1 выбрал эту работу, он должен выполнить тяжелую обработку (от 5 до 20 минут), и к этому времени рабочий № 2 тоже выберет эту работу! Как с этим бороться?
Как я добавляю эти долго выполняющиеся задания:
Artisan::queue('process:import', [
'file' => $file_to_import->id,
]);
Текущая очередь. php
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 1800,
],
В настоящее время я ограничил numpro c до 1.
Текущая конфигурация супервизора
[program:laravel-worker-autoitbs]
process_name=%(program_name)s_%(process_num)02d
command=php /home/web/www/xxx/public_html/artisan queue:work database --memory=2048 --sleep=3 --tries=3 --timeout=0
autostart=true
autorestart=true
user=web
numprocs=1
redirect_stderr=true
stdout_logfile=/home/web/www/xxx/logs/worker.log