Сельдерей, раздающий очереди и рабочие - PullRequest
0 голосов
/ 26 декабря 2018

Я новичок в Celery и пытаюсь понять, как работают очереди.Если у меня есть две задачи, скажем, task1 и task2, и я помещаю их в разные очереди и в задачу1, я использую только одного работника, а в задаче2 я использую несколько работ, будет ли задача1 выполняться только по одной за раз, поскольку у меня только один работник?и будет ли task2 запускаться столько раз, сколько у меня рабочих?Правильно ли мое понимание?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

task2 не будет выполняться столько раз, сколько у вас работников в этой очереди, это задание будет распределено одному из работников, которые будут доступны в этот момент времени.

0 голосов
/ 26 декабря 2018

Вы рядом.Вы можете распределять задачи по определенным очередям и настраивать работников на прослушивание только определенных очередей и масштабировать количество работников, слушающих каждую очередь независимо.Как правило, большее количество работников означает, что одновременно может выполняться больше задач.

Однако наличие только одного работника, назначенного одной конкретной очереди / задаче, не гарантирует, что задача будет выполняться только по одной за раз.
По умолчанию для рабочих включен параллелизм, а это означает, что один работник может использовать несколько процессов для одновременного выполнения задач.Кроме того, есть и другие рабочие параметры, которые следует учитывать, такие как предварительная выборка и раннее подтверждение.

Если вы хотите, чтобы задача могла выполняться только по одному, не следует полагаться на (отсутствие) наличие рабочих процессов.Вместо этого механизм блокировки, подобный описанному в документах , обеспечивающий выполнение задачи по одному , был бы одним из рекомендуемых подходов для этого.

...