У меня есть приложение firestore с облачной функцией, которая запускает cronjob.Облачная функция занимает много времени и извлекает большое количество данных.Я установил предел памяти для моей функции в 2 Гб, а время ожидания 540 секунд и Повторить попытку при ошибке это НЕ проверено .
Облачная функция по сути выглядит следующим образом:
export const fetchEpisodesCronJob = pubsub
.topic('daily-tick')
.onPublish(() => {
console.log(`TIMING - Before Fetches ${rssFeeds.length} feeds`, new Date())
return Promise.map(
rssFeeds.map(rssFeed => rssFeed.url),
url => fetch(url).catch(e => e).then(addFeedToDB), // <-- This can take a long time
{
concurrency: 4
}
).catch(e => {
console.warn('Error fetching feeds', e);
})
})
Однако в журналах я вижу следующее (продолжается бесконечно):
Как видите, функция завершается со статусом timeout , однако она снова запускается снова.Что странно, я установил ограничение в 540 секунд, однако время ожидания составляет 5 минут.Также обратите внимание, что я проверил облачную консоль и вручную отключил последнюю публикацию cronjob в 10:00, но с тех пор вы можете увидеть несколько триггеров публикации.(Поэтому я считаю, что cronjob настроен нормально)
Также я получаю постоянные ошибки, повторяющиеся в консоли:
Мой вопросКак предотвратить повторное выполнение облачной функции, когда она уже была уничтожена из-за тайм-аута.Это ошибка или мне нужно где-то явно указать оператор kill.
Спасибо!