Я пытаюсь запустить задания в очереди и передать дополнительные параметры через командную строку. Мой вариант использования таков:
У меня есть 4 запущенных процесса queue:work
через супервизора. Все задания в моей очереди требуют доступа к прокси-серверу, через который я могу одновременно запускать только 4 процесса. Когда я запускаю задание в очереди, мне нужно найти номер процесса (от 1 до 4), который в данный момент не используется, а затем запустить мою команду через этот процесс.
Я использую таблицу базы данных для хранения процессов, и в ней есть столбец для in_use
, который отслеживает, используется ли он, но проблема, которую я вижу, заключается в том, что когда две команды queue:work
выполняются одновременно, один и тот же прокси-процесс может быть выбран из база данных для обоих.
Что я хочу
php artisan queue:work --process=1
Затем каким-то образом получить этот аргумент внутри задания, чтобы я мог запускать свои 4 процесса каждый в супервизоре отдельно.
В качестве обходного пути я создал пользовательскую команду artisan, которая будет принимать аргумент, но при этом я теряю функциональность очереди. Я не хочу разрабатывать собственный процесс очереди.
Есть ли способ передать этот аргумент? Или, в качестве альтернативы, есть ли способ, которым я мог бы выталкивать задания из очереди из моей пользовательской команды artisan, а затем запускать их вручную, а не через queue:work
?
jobs
, сколько заданий стоит в очереди для каждого процесса, а затем поместить задание в наименьшую очередь и передать тот же идентификатор процесса в конструктор задания? - person Jeff   schedule 12.02.2016