【发布时间】:2022-02-28 15:58:14
【问题描述】:
所以我创建了一个简单的 node.js 应用程序来使用 puppeteer 自动生成 PDF 并通过电子邮件发送。在我的本地服务器上一切正常,但是一旦我部署到 heroku,如果我尝试创建超过 2 个 PDF,服务器将超时。因此,如果我只在我的 heroku 应用程序上创建 2 个 PDF,它可以正常工作,但是一旦我尝试生成超过该应用程序超时的内容。
这是我用来生成每个 PDF 的循环:
for (let x = 1; x <= numTickets; x++) {
console.log(x, " / ", numTickets);
try {
const browser = await puppeteer.launch({
headless: true,
args: ["--no-sandbox", "--disable-setuid-sandbox"],
});
const page = await browser.newPage();
//compile html
const content = await compile(template, {
billing,
id: id + "-" + `${x}`,
campaign,
});
options.attachments.push({
filename: `${billing.first_name}-housedoubleup-${id}-${x}.pdf`,
path: `./${billing.first_name}-housedoubleup-${id}-${x}.pdf`,
contentType: "application/pdf",
});
await page.setContent(content);
await page.emulateMediaType("screen");
await page.pdf({
path: `${billing.first_name}-housedoubleup-${id}-${x}.pdf`,
format: "a5",
printBackground: true,
landscape: true,
});
console.log("done");
} catch (e) {
console.log("Error -> ", e);
}
if (x === numTickets) {
sendEmail(options);
}
}
我想知道我的 heroku 免费套餐上的 512MB RAM 是否会限制正在生成的其余 PDF。
如果有人知道如何提供帮助或可能出了什么问题,我将不胜感激 :)
【问题讨论】:
-
也许使用工作进程?这段代码是从哪里调用的——HTTP 路由处理程序或...?
-
我正在经历同样的事情。当我只有 2 个 puppeteer 实例打开 chrome 时,它不会崩溃,但似乎不再让 heroku 崩溃。我没有使用节点服务器,但我也尝试过,它也崩溃了。
标签: javascript node.js heroku puppeteer