第一次海报-相当新的发展,所以请原谅我的无知。任何帮助都是非常感谢的。
我收到云函数的间歇性超时错误。有几件事要知道。这些函数非常小,通常只需要150ms或更短的时间。超时错误仅在冷启动时发生。超时错误并不是每次都会发生,可能是8-10个中就有一个。我知道我应该回报一个承诺,如果我不知何故没有,请让我知道。
是我的代码有问题,还是这是云函数的正常问题?
示例代码:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
const db = admin.firestore();
exports.editCustomerHttp = functions.https.onCall((data, context) => {
let Customer = {
customerId: data.docId,
customerName: data.oldCustomerName,
}
const batch = db.batch();
const editCustomerRef = db.collection(data.orgName).doc(data.orgId).collection("Customers").doc(data.docId);
batch.update (editCustomerRef, {
customerName: data.newCustomerName,
customerNameSortBy: data.newCustomerNameSortBy,
})
const editDropdownRefOld = db.collection(data.orgName).doc(data.orgId);
batch.update (editDropdownRefOld, {
'ListOfCustomers': admin.firestore.FieldValue.arrayRemove(Customer),
})
return batch.commit()
.catch(error => {
console.error("New Customer Failed to be Edited", error)
})
})发布于 2020-05-24 08:16:36
我可以看到您的执行花了60004毫秒(60秒),然后才超时。默认情况下,函数在1分钟后超时,但可以将这段时间延长到9分钟。我建议你通读这篇documentation,因为它提供了更多关于如何在云函数中处理超时的细节。
下面的代码片段包括计划在函数执行开始后2分钟执行的代码。如果超时恰好设置为1分钟,则此代码可能永远不会执行:
exports.afterTimeout = (req, res) => {
setTimeout(() => {
// May not execute if function's timeout is <2 minutes
console.log('Function running...');
res.end();
}, 120000); // 2 minute delay
};避免函数超时的一种好做法是结合使用以下技术:
https://stackoverflow.com/questions/61283418
复制相似问题