В настоящее время у меня есть асинхронная функция, выполнение которой занимает ~ 7 минут.Он отлично работает на сервере локального узла, но не проходит проверку готовности в Google App Engine через ~ 6 минут и вызывает перезапуск приложения (состояние 503 при проверке готовности).
Структура функции выглядит следующим образом:
await Promise.all(customers.map(customer => recursivelyDownloadProfiles(someRequestParams)));
const recursivelyDownloadProfiles = (request, profiles = []) =>
downloadProfilesAndReturnNextPage(request).then(
([nextRequest, moreProfiles]) => {
const allProfiles = [...profiles, ...moreProfiles];
if (!nextRequest) {
return allProfiles;
}
return recursivelyDownloadProfiles(nextRequest, allProfiles);
}
);
Каждая загруженная страница имеет 5-секундный тайм-аут «сна», чтобы оставаться в пределах квот API.
Я пытаюсь понять проблему - это «неблокирующий» код?так что даже если моя рекурсия была бесконечной (а это не так), почему проверка готовности не удалась?
update
Просматривая журналы проверки готовности, они отправляют 200 на каждую итерацию примерно через 6 минут, а затем начинают выходить из строя на некоторой итерации.Что-то делать с http-запросами, блокирующими проверки готовности?