【问题标题】:Firebase Cloud Function finished with status: 'response error'Firebase 云功能完成状态:“响应错误”
【发布时间】:2021-10-22 05:00:30
【问题描述】:

我有一个云函数,它返回大量数据(50'000 个文档)作为对象。当我运行它时,我收到错误finished with status: 'response error'

这仅在我导出所有数据时发生,当应用限制(最多 20'000)时,它可以正常工作。这让我认为响应可能太大了,但日志中根本没有关于此的信息。添加 try / catch 也不起作用。在控制台中,我只收到上述消息,没有任何进一步的指示。

我知道函数通常会在超时或超出内存时记录,所以我想知道还有什么可能是错误的来源。

exports.run = functions.runWith({ timeoutSeconds: 540, memory: '8GB' }).https.onRequest(async (req, res) => {
  try {
    const querySnap = await db.collection("myData").get();
    const data = querySnap.docs.map(doc => doc.data());
    return res.status(200).json({
      data: data
    }).end();

  } catch (err) {
    console.log(err);
    return res.status(400).end();
  }
});

编辑:确实是响应的大小导致了这个错误。如果您简单地返回给定大小的数据(使用Buffer.alloc(bytes)),您可以重现这一点。

【问题讨论】:

    标签: javascript firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

    我认为你达到了 HTTP 函数的最大 HTTP 响应大小,即 10 MB

    参考:https://cloud.google.com/functions/quotas#resource_limits 以下截图取自该参考。

    【讨论】:

    • 可能是这种情况,但我没有从 firebase 函数中得到任何日志,说明返回大小太大。我将对此进行调查并创建一个返回大量数据的随机函数,看看是否是这种情况。将用我的发现更新问题。
    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 2017-08-26
    • 2020-05-11
    • 2019-12-04
    • 1970-01-01
    • 2020-02-25
    • 2022-06-14
    • 2018-11-17
    相关资源
    最近更新 更多