我尝试在aws lambda上执行从两个不同文件导入的两个函数:
const tag_test = require("./tag.js");
const login_logout = require("./login_logout.js");
exports.handler = async function(event, context) {
await tag_test.tag();
await login_logout.login();
console.log("all tests done.");
}
第一个函数执行正常,但在运行第二个函数时,lambda在一个点停止并等待整个过程超时。我怀疑它在let browser
之前停止,因为在控制台日志中,我可以看到"opening up browser"
但不是"got browser"
。
module.exports.tag = async() => {
console.log("starting test 2");
const puppeteer = require('puppeteer-lambda');
console.log("opening up browser");
let browser = await puppeteer.getBrowser(
'--no-sandbox',
'--disable-gpu',
'--single-process'
);
console.log("got browser");
let page = await browser.newPage();
console.log("got page");
//my test
//...
}
有没有人对出了什么问题有任何见解?
答案 0 :(得分:0)
增加lambda超时。默认为3秒。
答案 1 :(得分:0)
解决。
这实际上是puppeteer-lambda的问题。显然,您无法打开浏览器,关闭它,然后使用puppeteer-lambda在AWS lambda上再次打开它。我在第一次测试中打开并稍后关闭了一个浏览器,这就是我的第二次测试停留在let browser
的原因。
为了解决这个问题,我让第一个测试返回浏览器并将其传递给第二个测试以重复使用。