首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google云函数错误-间歇性错误-简单函数超时

Google云函数错误-间歇性错误-简单函数超时
EN

Stack Overflow用户
提问于 2020-04-18 10:07:59
回答 1查看 109关注 0票数 0

第一次海报-相当新的发展,所以请原谅我的无知。任何帮助都是非常感谢的。

我收到云函数的间歇性超时错误。有几件事要知道。这些函数非常小,通常只需要150ms或更短的时间。超时错误仅在冷启动时发生。超时错误并不是每次都会发生,可能是8-10个中就有一个。我知道我应该回报一个承诺,如果我不知何故没有,请让我知道。

是我的代码有问题,还是这是云函数的正常问题?

示例代码:

代码语言:javascript
复制
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)
  })

})
EN

回答 1

Stack Overflow用户

发布于 2020-05-24 08:16:36

我可以看到您的执行花了60004毫秒(60秒),然后才超时。默认情况下,函数在1分钟后超时,但可以将这段时间延长到9分钟。我建议你通读这篇documentation,因为它提供了更多关于如何在云函数中处理超时的细节。

下面的代码片段包括计划在函数执行开始后2分钟执行的代码。如果超时恰好设置为1分钟,则此代码可能永远不会执行:

代码语言:javascript
复制
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
};

避免函数超时的一种好做法是结合使用以下技术:

  1. 设置的超时时间大于预期的函数执行时间。
  2. 跟踪执行过程中剩余的时间量,并提前执行清理/退出。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61283418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档