gpt4 book ai didi

firebase - 在 Firebase Functions (Google Cloud) 上创建 Puppeteer PDF 超时

转载 作者:行者123 更新时间:2023-12-05 06:06:16 25 4
gpt4 key购买 nike

我在 Firebase 上有一个创建 PDF 文件的功能,但每次都会超时。为了调查这个问题,我添加了带有数字的调试日志。我运行的函数的源代码是:

const createPDF = async (html, outputPath) => {

console.log(1);
let pdf;

try {
console.log(2);

const browser = await puppeteer.launch();
console.log(3);

const page = await browser.newPage();
console.log(4);

await page.emulateMediaType('screen');

console.log(5);
await page.setContent(html, {
waitUntil: 'networkidle0'
});

console.log(6);
pdf = await page.pdf({
// path: outputPath,
format: 'A4',
printBackground: true,
margin: {
top: "50px",
bottom: "50px"
}
});

console.log(7);
await browser.close();

} catch (e) {
console.error(e);
}

console.log(8);
return pdf;
};

日志说:

10:58:12.490 AM 1
10:58:12.492 AM 2
10:58:16.469 AM 3
10:58:31.236 AM Function execution took 20003 ms, finished with status: 'timeout'

当我在本地部署该脚本时,该脚本有效。我做错了什么?

最佳答案

我认为 launch 应该与参数 { args: ['--no-sandbox'] } 一起使用。我找到了这种方法的例子 here .

我结合提供的代码和 helloworld 云函数创建了测试,并且确实总是在 3 之后以超时结束。但是,当我使用上述参数时,它开始正常工作。我用 256MiB 和 30 秒超时对其进行了测试。

工作代码:

const puppeteer = require('puppeteer');

exports.helloWorld = async (req, res) => {
console.log(2);

const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
console.log(3);

const page = await browser.newPage();
console.log(4);

let message = req.query.message || req.body.message || 'Hello World!';
res.status(200).send(message);
};

关于firebase - 在 Firebase Functions (Google Cloud) 上创建 Puppeteer PDF 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65807251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com