Alexey
Я такое юзал https://packagist.org/packages/bazilio/yii2-async
Alexey
Но параллельные воркеры надо самому писать
SiZE
мне не нужно будет говорить каждой задаче какой воркер юзать?
воркер только имя очереди знает. если есть свободный, он берет в работу
Good
Я сам не использовал еще очереди но у меня в проекте другой чувак делал, и там вроде не было геморроя. Оно само распихивает по воркерам
Дмитрий
вот в yii2-queue там можно тоже сделать несколькьо воркеров, но при выполнении нужно говорить какой воркер какую задачу берёт
Дмитрий
ща
Dmitriy
можно можно
Good
По-моеиу, можно не говорить
Alexey
там есть дефолтная очередь
Good
Там больше всего было гемора со стабильной работой этих воркеров) Решили с помощю supervisor
Дмитрий
вот там пример:
Дмитрий
// Sending task to queue to be processed via standard worker Yii::$app->queue1->push(new DownloadJob([ 'url' => 'http://example.com/image.jpg', 'file' => '/tmp/image.jpg', ])); // Sending tasks to another queue to be processed by third party worker Yii::$app->queue2->push([ 'function' => 'download', 'url' => 'http://example.com/image.jpg', 'file' => '/tmp/image.jpg', ]);
Дмитрий
явно задаётся queue1 и queue2
Дмитрий
или я не правильно понял
Dmitriy
надо реквест отправить что бы "каналы" запилили
Alexey
в yii2-async + redis такого нет
SiZE
@MatvikX @crestoff Принцип работы следующий. Вы помещаете задание в очередь. Заданий этих N штук. Воркер берет первую в очереди задачу и помечает ее "в процессе". Если воркеров несколько, соответственно они берут каждый по задаче. Как только один из воркеров выполнил задачу, он берет следующую из очереди и так далее.
Good
Так там же не нужно несколько компонентов очереди
Good
Очередь одна, а воркеров несколько
SiZE
rabbitmq имеет настройку: vhost и имя очереди. Т.е. обычно vhost отвечает за окружение: demo, production. А имя очереди чисто формально за тип задачи: реиндексация, удаления старых данных и тп. На каждое имя очереди задается количество воркеров.
Good
И она распихивает
Good
Но я не пробовал)
Good
Я вот читал в доке по yii-queue, что в rabbitMQ куча ограничений
Дмитрий
чот тут каша уже , не понятно о чем конкретно речь)))
andrew
а как грамотно остановить воркеры при деплое апдейта, чтобы они завершили нормально свои таски, компонент юи это как-то обрабатывает? сигналы от ос
Good
У тебя там зарегистрировано несколько компонентов очередей в аппликухе
SiZE
Я вот читал в доке по yii-queue, что в rabbitMQ куча ограничений
Ну у нас рэбит отвечает много за что, годно работает
Дмитрий
тогда где задаётся количество воркеров?
Good
Ща, нужно глянуть. Ту часто кода не я писал)
Дмитрий
ну ка щеё раз
Дмитрий
гляну доку
Good
Ну компонент там точно один, я в конфиге вижу
Дмитрий
может слепой... но не вижу где это настраивается
Дмитрий
https://github.com/yiisoft/yii2-queue/tree/master/docs/guide
andrew
в supervisor указываешь numproc
andrew
это кол-во воркеров
Дмитрий
ща глягну
Дмитрий
получается только тут?
Дмитрий
если через демона или крона - то никак не настроить?
Дмитрий
просто интересно
andrew
queue/run
andrew
по крону
Дмитрий
я имею ввиду количество
Дмитрий
воркеров
Good
Внимание: Драйвера RabbitMQ и Gearman не поддерживают отложенные задания. Внимание: Драйвер RabbitMQ не поддерживает статусы. Вот, много ограничений у него
andrew
сколько раз крон дернет, столько и воркеров
Дмитрий
от демона вижу
Good
Я так понимаю, можно запустить сколько угодно
andrew
да
Дмитрий
дада, всё верно
Yet Another Stats (β)
Карма @mhthnz стала 3
Good
И оно само уже будет распределять
Дмитрий
ну круто, а я просто искал это в конфиге yii
Дмитрий
оказывается там количество и название очередей
Дмитрий
а воркеры одни и теже
Дмитрий
получается
Дмитрий
Спасибо! Очень помогли!
Дмитрий
Good
Ну в конфиге точно не нужно ничего дублировать
Good
Если че, мы на редисе делали, вроде круто все)
andrew
тоже редис
SiZE
а редис если перезагрузить нормально все сохраняет?
Dmitriy
по крону
выключай крон =)
andrew
да
Dmitriy
и жди
andrew
он персистентный
andrew
есть синхронизация с диском
SiZE
он персистентный
в рэбите просто еще мониторинг есть
Dmitriy
зачем вообще очередь и крон вместе ?
Dmitriy
звучит костыльно
SiZE
зачем вообще очередь и крон вместе ?
чтобы не расслаблять булки наверное :)
Good
Но я хз, не пропадает ли что