Я использую Celery с Django для управления очередью задач и использую один (или несколько) небольших (одноядерных) экземпляров EC2 для обработки задачи.
У меня есть некоторые соображения.
- Моя задача съедает 100% ЦП на одном ядре. - использует любой доступный процессор, но только в одном ядре
- Если на одном ядре выполняются 2 задачи, каждая задача будет замедлена вдвое.
- Я хотел бы начать каждую задачу как можно скорее и не позволять ей стоять в очереди.
Теперь скажем, у меня есть 4 экземпляра EC2, я запускаю сельдерей с "-c 5". то есть 5 одновременных задач на экземпляр.
В этой настройке, если у меня есть 4 новых задачи, я бы хотел убедиться, что каждая из них переходит в другой экземпляр, а не 4 отправляется в один и тот же экземпляр, и каждая задача борется за ЦП.
Точно так же, если у меня есть 8 задач, я бы хотел, чтобы каждый экземпляр получал 2 задачи за раз, а не 2 экземпляра, обрабатывающих по 4 задачи каждый.
Сельдерей уже ведет себя так, как я описал? Если нет, то как я могу заставить его вести себя как таковой?