Сельдерей - гранулированные задачи против передачи сообщений - PullRequest
1 голос
/ 29 марта 2012

Раздел документов Celery Производительность и стратегии предлагает разделить задачи с несколькими «шагами» на подзадачи для более эффективного распараллеливания. Затем упоминается, что (конечно) будет больше служебных сообщений, поэтому разделение на подзадачи может не стоить дополнительных затрат.

В моем случае у меня есть общая задача: извлечь небольшое изображение (150px x 115px) из стороннего API, а затем загрузить его через HTTP в REST API моего сайта. Я могу либо реализовать это как одну задачу, либо разделить этапы получения изображения, а затем загрузить его на две отдельные задачи. Если я выполняю отдельные задачи, я предполагаю, что мне придется передать изображение как часть сообщения второму заданию.

У меня вопрос: какой подход должен быть лучше в этом случае, и как я могу измерить производительность, чтобы знать наверняка?

1 Ответ

0 голосов
/ 29 марта 2012

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

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

Если бы я попытался измерить это, я бы сравнил время выполнения с использованием того же числаработники для каждой из двух стратегий.Например, 2 работника в объединенном задании против 2 работников в разделенном.Затем по 4 рабочих на каждого и так далее.Я склоняюсь к тому, что отдельная задача покажет себя быстрее;особенно когда количество рабочих увеличено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...