"Error: could not handle the request" when sending too large a response with Google Cloud Functions
"Error: could not handle the request" when sending too large a response with Google Cloud Functions
这里有一点上下文:目前,我们正在使用 Google Cloud Datastore 在我们的应用程序中存储许多不同类型的记录,并且我们正在使用 Google Cloud Functions return 各种类型的所有记录。我们通过 HTTP 请求执行此操作,因此这是一个 HTTP 触发器。就在昨晚,我们 运行 遇到了一个问题,当我们所有 field
类记录的总大小太大时,我们的端点突然失败并显示 "Error: could not handle the request"。
我们的包装器非常简单:我们的端点接受种类的类型作为路径参数,运行数据存储区查询,并为所有该种类的记录使用过滤器,然后使用 res.send
发送查询结果。
起初,这似乎是 t运行saction 大小超过 google 提供的限制的问题。但是,当我添加更多日志记录时,我确定查询确实正确地找到了所有字段记录而没有发生意外;但是,无论出于何种原因,它在 res.status(200).send(resultsArr);
.
的最后一步中断了
这似乎肯定与发回的响应大小有关,因为成功降低了所有实体的总大小。在这一点上我唯一能想到的是 res.send
不会发回这种大小的响应,但是在谷歌搜索时我找不到关于这些限制的任何信息。
有没有人遇到过这样的事情?有谁知道对此有什么好的预期解决方案?我知道我们可以在有限制的情况下对端点进行多次调用,但我担心这根本就是一个问题。 运行 限制查询大小是一回事,但我没想到 res.send
本身会在这里限制我们。
(已编辑:是的,响应超过 10MB。如果您需要帮助确定这是否是您的问题,您可以使用如下内容进行验证:
let size = Buffer.from(JSON.stringify(resultsArr)).length;
console.log('Attempting to send response of size:', size);
)
HTTP 触发器的传入和传出负载限制当前设置为 10MB,如 documented here。
您可以将工作负载切换到云 运行,它可以接受 32 MB 的请求负载。
2022 - 第 2 代云函数现在支持最大 32MB 的请求。 https://cloud.google.com/functions/quotas#resource_limits
这里有一点上下文:目前,我们正在使用 Google Cloud Datastore 在我们的应用程序中存储许多不同类型的记录,并且我们正在使用 Google Cloud Functions return 各种类型的所有记录。我们通过 HTTP 请求执行此操作,因此这是一个 HTTP 触发器。就在昨晚,我们 运行 遇到了一个问题,当我们所有 field
类记录的总大小太大时,我们的端点突然失败并显示 "Error: could not handle the request"。
我们的包装器非常简单:我们的端点接受种类的类型作为路径参数,运行数据存储区查询,并为所有该种类的记录使用过滤器,然后使用 res.send
发送查询结果。
起初,这似乎是 t运行saction 大小超过 google 提供的限制的问题。但是,当我添加更多日志记录时,我确定查询确实正确地找到了所有字段记录而没有发生意外;但是,无论出于何种原因,它在 res.status(200).send(resultsArr);
.
这似乎肯定与发回的响应大小有关,因为成功降低了所有实体的总大小。在这一点上我唯一能想到的是 res.send
不会发回这种大小的响应,但是在谷歌搜索时我找不到关于这些限制的任何信息。
有没有人遇到过这样的事情?有谁知道对此有什么好的预期解决方案?我知道我们可以在有限制的情况下对端点进行多次调用,但我担心这根本就是一个问题。 运行 限制查询大小是一回事,但我没想到 res.send
本身会在这里限制我们。
(已编辑:是的,响应超过 10MB。如果您需要帮助确定这是否是您的问题,您可以使用如下内容进行验证:
let size = Buffer.from(JSON.stringify(resultsArr)).length;
console.log('Attempting to send response of size:', size);
)
HTTP 触发器的传入和传出负载限制当前设置为 10MB,如 documented here。
您可以将工作负载切换到云 运行,它可以接受 32 MB 的请求负载。
2022 - 第 2 代云函数现在支持最大 32MB 的请求。 https://cloud.google.com/functions/quotas#resource_limits