В вашем подходе постановка задачи в очередь очень тесно связана с обработкой запроса задачи, в том смысле, что запрос одной такой задачи в очереди должен быть обработан для постановки следующей задачи.Поэтому вам нужно взглянуть на факторы, ограничивающие скорость обработки ваших заданий, на которые вы можете попасть.Те из вашей конфигурации очереди довольно щедры, но есть и другие.
Если вы настроили ваше приложение на threadsafe
и если ваш дизайн использует в своих интересах экземпляр вашего приложениясможет обрабатывать несколько запросов одновременно, до максимума в зависимости от его max-concurrent-requests
config и задержки обработки .Без конфигурации threadsafe
этот максимум равен 1.
Как только экземпляр достигает максимального числа запросов задач, он может одновременно обрабатывать, он не будет запускать обработки новых задач из очереди (такон не выполнит шаг № 1 - ставит новую задачу в очередь), пока не завершит обработку хотя бы одной из уже выполняемых задач.Таким образом, скорость постановки задач в очередь для экземпляра приложения эффективно ограничена - каждый запущенный экземпляр может вносить вклад в общее количество задач в очереди только с числом, равным максимальному количеству задач, которые он может обрабатывать параллельно.
Но ваше приложение настроено на автоматическое масштабирование, поэтому, как только вам удастся быстро «заполнить» все запущенные экземпляры, планировщик запустит для него новые экземпляры.По мере запуска новых экземпляров они смогут обрабатывать больше задач в очереди и, таким образом, ставить новые задачи в очередь, добавляя с указанным выше количеством к общему количеству задач в очереди.
Но этот рост числа задач в очереди может быть намного медленнее, чем в то время, когда экземпляры не достигли максимальной скорости обработки - требуется время, чтобы измерить, как новые экземпляры помогают с трафиком, чтобы определить, нужно ли больше экземпляровили нет.Общий рост числа задач в очереди будет иметь профиль «лестница», где высота шага - это максимальное количество одновременных запросов, которые может обработать экземпляр, а количество шагов - количество запущенных новых экземпляров +1.
Поскольку вы не видите каких-либо ошибок постановки задач в очередь, я могу только подозревать, что вы каким-то образом достигли ограничения скорости при обработке поставленных в очередь задач или что-то вообще останавливается.Причин может быть много, в том числе, например:
- попадание в ежедневный бюджет вашего приложения (скорее всего из-за количества часов работы экземпляра)
- превышение ограничений автоматического масштабирования
Вы должны исследовать свое приложение с этой точки зрения, чтобы точно определить виновника.
Примечание: я предполагаю, что это на GAE, а не на сервере разработки (, которыйне уважает конфиги очереди задач и, скорее всего, не может даже приблизиться к возможностям параллельной обработки GAE).