Задача TaskQueue ядра приложений, влияющая на производительность обработчиков, с которыми сталкивается пользователь

Моя задача очереди использует urlfetch для получения некоторых данных из внешнего API и сохраняет их в объектах хранилища данных ndb.

Всего это занимает около 15 секунд.

Почему-то при запуске задачи все остальные обработчики (простые обработчики ответов json) становятся медленнее. (медленнее означает +500 мс)

Что может быть причиной этого?

Разве идея фоновых задач не влияет на запросы, с которыми сталкивается пользователь.

Я наткнулся на это сообщение в блоге, но моя задача занимает больше 1 секунды. Не понимаю, как это мне поможет.


person Sander van Leeuwen    schedule 18.07.2016    source источник


Ответы (1)


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

Обратите внимание, что обычно автоматический планировщик App Engine запускает новый экземпляр, когда ответы от ваших текущих экземпляров замедляются. Однако замедление в вашем случае связано не с растущим объемом стандартных запросов, а с необычным запросом, который выполняется гораздо дольше. Это предотвращает реакцию автоматического планировщика на увеличенные задержки. Вы можете переключиться на ручное или базовое планирование, что дает вам больший контроль над емкостью (общее количество экземпляров) и правилами для запуска новых экземпляров, но создание другого модуля для фоновых задач — лучшее решение.

person Andrei Volgin    schedule 18.07.2016