У меня есть приложение Google Cloud с несколькими облачными функциями, которые вызывают API, а затем сохраняют ответ в Firebase. Я настроил эту запланированную функцию для повторного запуска API в случае ошибки, и она прекрасно работает. Но я хочу повторить вызов, если нужных мне данных еще нет. Повторный вызов сразу может сработать, если я выдам ошибку, но маловероятно, что недостающие данные будут доступны через несколько секунд, поэтому я бы предпочел проверять их раз в час, пока у меня не появятся действительные данные.
Нижеэто сокращенная версия моей функции. Я могу представить себе добавление setTimeout и повторный вызов самой функции, но я не уверен, что сделаю это, или это хорошая идея, так как она будет поддерживать функцию в течение долгого времени. Есть ли способ автоматически повторить эту запланированную функцию через произвольный интервал времени?
exports.fetchData= functions.pubsub
.schedule('every Tuesday 6:00')
.timeZone('America/New_York')
.onRun(async context => {
const response = fetch(...)
.then(res => {
if (res.status < 400) {
return res;
} else {
throw new Error(`Network response was not ok. ${res}`);
}
})
.then(res => res.json());
const resObj = await response;
resObj.map(x => {
// check response for valid data
})
if (// data is valid) {
// save to Firebase
} else {
// retry in 1 hour
}
});
});