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