yii2-queue асинхронное выполнение
yii2-queue асинхронное выполнение
по умолчанию задачи выполняются по порядку-1,2,...10
как сделать запуск чтобы задача 2 запустилась сразу после запуска задачи 1? а после запуска задачи 2 сразу запустилась задача 3?
как сделать запуск чтобы задача 2 запустилась сразу после запуска задачи 1? а после запуска задачи 2 сразу запустилась задача 3?
Re: yii2-queue асинхронное выполнение
Написать свою очередь учитывающую очередность выполнения.
Как простое и быстрое решение - добавить логику сортировки
Как простое и быстрое решение - добавить логику сортировки
Re: yii2-queue асинхронное выполнение
Вообще yii2-queue - это пример того как реализовывать не надо.
Но это чисто мое мнение.
Но это чисто мое мнение.
Re: yii2-queue асинхронное выполнение
создать задачу контейнер
и в ней выполнять код задач
Обычная очередь рассчитана на то что задачи независимы друг от друга.
Зависимость задач - это уже бизнес логика
и в ней выполнять код задач
Обычная очередь рассчитана на то что задачи независимы друг от друга.
Зависимость задач - это уже бизнес логика
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Тем более что окажется что оно вам и не нужно было, странное это.
Re: yii2-queue асинхронное выполнение
у меня нету зависимости по задачам
мне надо быстро выполнить 10000 заданий
если запускать воркер каждую минуту по крону то в час всего 60 воркеров будет работать одновременно
мне надо быстро выполнить 10000 заданий
если запускать воркер каждую минуту по крону то в час всего 60 воркеров будет работать одновременно
Re: yii2-queue асинхронное выполнение
последовательно, одну за другой как вы написали?
значит есть зависимость.
значит нет зависимости?
а зачем по крону?
Starting Workers
Supervisor
https://github.com/yiisoft/yii2-queue/b ... /worker.md
Но если надо именно по крону, тогда
1. напишите свой запускальщик который например берет монопольную блокировку у БД. И если не может взять - заканчивает свою работу. Через минуту он опять запустится - не смог взять, значит заканчивает, потому предыдущий запуск еще не закончен
2. каждая задача при старте выполнения пытается получить блокировку и ждет, пока не получит
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Тем более что окажется что оно вам и не нужно было, странное это.
Re: yii2-queue асинхронное выполнение
Есть не плохой разбор очереди с реализаций параллельного (ассинхронного) выполнения задач тут
Но и его надо доработать напильником, так как при активной работе с БД упретесь в лимит коннектов и будет что-то вроде
Код: Выделить всё
SQL server has gone away
Еще ему по хорошему не хватает менеджера очередей. Кто-то же должен контролировать нагрузку и грамотно распределять задачи? Особенно важно это будет, если вырастите до горизонтальной / микросервисной архитектуры.
И да, это история больше не про cron, а про systemctl или supervisor, как писал выше skynin
Закончу тем, с чего начал:
Re: yii2-queue асинхронное выполнение
нашел более простое решение
можно запустить сразу несколько обработчиков из крона
можно запустить сразу несколько обработчиков из крона
Код: Выделить всё
* * * * * /app/yii queue/run
* * * * * /app/yii queue/run
* * * * * /app/yii queue/run
* * * * * /app/yii queue/run
* * * * * /app/yii queue/run
Re: yii2-queue асинхронное выполнение
одновременно запустятся задачи 1, 2, 3, 4kukuruku писал(а): ↑2020.06.23, 15:19 нашел более простое решение
можно запустить сразу несколько обработчиков из кронаКод: Выделить всё
* * * * * /app/yii queue/run * * * * * /app/yii queue/run * * * * * /app/yii queue/run * * * * * /app/yii queue/run * * * * * /app/yii queue/run
в идеальном случае конечно
где в этом решении задача 2 после задачи 1
задача 3 после 2
и т.д.?
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Тем более что окажется что оно вам и не нужно было, странное это.
Re: yii2-queue асинхронное выполнение
наверно плохо объяснил- порядок запуска не важен, 1,2,3,4 или 4,3,2,1
главное чтобы запустилась одна задача, затем не дожидаясь стартанула следующая, и т.д.
главное чтобы запустилась одна задача, затем не дожидаясь стартанула следующая, и т.д.
-
- Сообщения: 977
- Зарегистрирован: 2014.08.27, 21:54
Re: yii2-queue асинхронное выполнение
ну так в yii2-queue это из коробки работает.