Почему облачные функции для Firebase занимают 25 секунд?
Для ясности у меня есть другие облачные функции, которые все работают с перебоями (т.е. из "холодного" за 2-6 секунд, и все используют один и тот же шаблон для импорта экземпляра администратора и экспорта функции как модуля)
Я видел другие подобные посты, но это действительно беспокоит меня. У меня есть облачная функция, вот так:
const admin = require('../AdminConfig');
const { reportError } = require('../ReportError');
module.exports = (event) => {
const uid = event.params.uid;
const snapshot = event.data;
if (snapshot._newData === null ) {
return null;
}
console.log('Create org begin running: ', Date.now());
const organisation = event.data.val();
const rootRef = admin.database().ref();
const ref = rootRef.child('/organisations').push();
const oid = ref.key;
const userData = {
level: 'owner',
name: organisation.name,
};
const orgShiftInfo = {
name: organisation.name,
startDay: organisation.startDay || 'Monday',
};
const updatedData = {};
updatedData[`/users/${uid}/currentOrg`] = oid;
updatedData[`/users/${uid}/organisations/${oid}`] = userData;
updatedData[`/organisations/${oid}`] = organisation;
updatedData[`/org_shift_info/${oid}`] = orgShiftInfo;
rootRef.update(updatedData, (err) => {
if (err) {
return rootRef.child(`/users/${uid}/addOrgStatus`).set({ error: true })
.then(() => {
console.log(`error adding organisation for ${uid}: `, err);
return reportError(err, { uid });
});
}
console.log('Create org wrote succesfully: ', Date.now());
return rootRef.child(`/users/${uid}/addOrgStatus`).set({ success: true });
});
}
Я понимаю, что такое "холодный старт", но я думаю, что что-то серьезно не так, что это занимает 25 секунд. Журналы не возвращают никаких ошибок и выглядят так:
Есть ли какой-нибудь более глубокий способ отладки, чтобы попытаться выяснить, почему это занимает так много времени? Это непригодно в данный момент. Большое спасибо.
1 ответ
Решено: Извините, я немного неправильно понял API. Я должен был сначала посмотреть видео обещание!
Мне нужно было поставить
return rootRef.update...
вместо
rootRef.update...