Звучит так, как будто меняется в зависимости от количества отправляемых оповещений, продолжительности отправки каждого оповещения и количества запущенных активных экземпляров.
Я предполагаю, что отправка оповещения CD2M занимает от нескольких миллисекунд до десятков миллисекунд, в то время как для запуска экземпляра требуется несколько секунд, поэтому вы, вероятно, можете выдать несколько сотен или несколько тысяч предупреждений до того, как обоснование другого экземпляра задачи. Отношение количества времени, которое требуется для отправки каждого сообщения CD2M, к времени, которое требуется для запуска экземпляра, будет определять, сколько сообщений вы хотите отправить за задачу.
Если у вас уже есть достаточное количество запущенных экземпляров, у вас нет задержки для ожидания запуска экземпляров.
Кстати, это выглядит почти как идеальное приложение API MapReduce. Он в основном выполняет то, что вы описали во второй версии, за исключением того, что он принимает ваш первоначальный запрос и разбивает его на подзапросы, каждый из которых возвращает «страницу» набора результатов. Задача запускается для каждого подзапроса, который обрабатывает все элементы на своей «странице». Это улучшение по сравнению с тем, что вы описываете, потому что вам не нужно тратить время на просмотр исходного набора результатов.
Я считаю, что реализация по умолчанию для API MapReduce просто запрашивает все объекты определенного вида (т.е. все объекты пользователя), но вы можете изменить используемый фильтр.