Как запустить 20 очередей Laravel за все время? - PullRequest
0 голосов
/ 17 мая 2019

Я использую супервизор для одновременного запуска 20 процессов очередей из таблицы заданий. Мой планировщик задач создает около 5000 заданий в таблице заданий, а затем эти задания обрабатываются 20 процессами супервизора.

Проблема в том, что изначально запускается 20 очередей, но через некоторое время предположим, что 16 очередей процессов закончили работу, а 4 еще обрабатываются. почему эти 16 процессов не выбирают другие задания из очередей, почему они ждут завершения всех 4 процессов, прежде чем брать еще 20?

Этот SQL-запрос должен всегда показывать 20 результатов все время, но в большинстве случаев он показывает 5-10 результатов, а иногда 1-4. Я хочу, чтобы этот запрос показывал 20 результатов все время.

SELECT * FROM jobs WHERE reserved_at IS NOT NULL;

Я использую QUEUE_CONNECTION=database в моем файле .env.

Я не могу удалить --timeout=0, потому что некоторые задания маленькие, некоторые большие, и я не могу их классифицировать.

Вот мой код conf администратора;

[program:laravel-worker]

process_name=%(program_name)s_%(process_num)02d

command=php /var/app/current/artisan queue:work --sleep=3 --tries=1 --timeout=0

autostart=true

autorestart=true

user=root

numprocs=20

redirect_stderr=true

stdout_logfile=/var/app/current/storage/logs/worker.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...