const imageResponse = await axios.get(url[0], {
responseType: "arraybuffer",
});
const buffer = Buffer.from(imageResponse.data, "utf-8");
const image = Media.addImage(doc, buffer);我在一个循环中使用了上面的代码,这个循环将执行100次,因为它有100个图像。每个图像大小最大为150kb。我部署了256mb的云函数。我收到“错误:超出内存限制。函数调用被中断”。
问题陈述:
我需要在word文档中添加250个图像。我收到超过内存限制的错误。
问与答
有没有办法获得一张图片并添加到word文档中,然后清除该图片所使用的内存?
如何有效地在firebase云函数中使用此插件,并对图像进行云存储?
环境:
Firebase云函数(NodeJs)
大小: 256mb
Word文档生成库: docx (https://docx.js.org/#/)
发布于 2020-09-24 05:40:08
对于您描述的那种场景,正如Doug提到的那样,您应该考虑增加资源,以更好地处理对函数的请求。
您可以使用可用于部署函数的gcloud命令,使用标志内存来设置memory,例如:
gcloud beta functions deploy my_function --runtime=python37 --trigger-event=providers/cloud.firestore/eventTypes/document.write --trigger-resource=projects/project_id/databases/(default)/documents/messages/{pushId}
--memory=AmountOfMemory我建议你看一下云函数的best practices文档,其中解释了:
“临时目录中的本地磁盘存储是内存中的文件系统。您写入的文件会消耗函数可用的内存,并且有时会在两次调用之间保持不变。如果不显式删除这些文件,可能最终会导致内存不足错误和随后的冷启动。”
要更好地了解云函数如何管理请求,请查看此处提到的document:
“云函数通过将请求分配给函数的实例来处理传入的请求。根据请求量以及现有函数实例的数量,云函数可能会将请求分配给现有实例或创建新实例
函数的每个实例一次只能处理一个并发请求。这意味着,当您的代码正在处理一个请求时,不可能将第二个请求路由到同一实例。因此,原始请求可以使用您请求的全部资源(CPU和内存)。“
https://stackoverflow.com/questions/64034432
复制相似问题