node.js - 使用无头浏览器的 Lambda 函数出现网络错误
问题描述
我正在尝试在 AWS Lambda 上测试一个函数。该函数通过 Puppeteer 打开一个无头版本的 Chromium。浏览器被打开chrome-aws-lambda
,以避免上传整个浏览器。如果有帮助,我会通过无服务器部署我的 Lambda,并与 DynamoDB 表进行交互以用于其他目的。
以下函数检查 youtube 视频上是否存在广告:
async function checkAdsPresence(page, adSelector) {
await delay(10000);
try {
const module = await page.evaluate((adSelector) => {
const adModule = document.querySelector(adSelector);
const adType = adModule.children.length;
const presence = adType > 0;
return presence
}, adClass);
return module
} catch (err) {
return "No ad module"
}
}
该函数被重复调用并等待 10 秒,从延迟函数中可以看出,其定义如下。
function delay(time) {
return new Promise(function (resolve) {
setTimeout(resolve, time);
});
}
但是在调用该函数几次后,大约 4 次(视频中为 40 秒),Lambda 面板显示以下错误。
Calling the invoke API action failed with this message: Network Error
我的日志中没有显示其他错误,它只是停止,没有其他信息。知道什么可能导致这种情况吗?
解决方案
推荐阅读
- python - 如何在 python 中编写一个函数,将 2 个数字和 1 个字符串作为输入
- flutter - Flutter 中的 Android Java 注解
- docker - 远程访问在 WSL 2 上的 docker 容器中运行的 jupyter notebook
- javascript - 使用 npm 安装 ply 时没有获取此类文件或目录
- javascript - 如何让侧面菜单栏根据鼠标位置移动并立即做出反应?
- javascript - 如何在 React 中播放音频 onClick?
- css - Quasar Vue:在网格样式上设置静态宽度内容
- python - 通过将字符串列转换为pyspark中的整数类型来获取非空值的计数 - sql
- javascript - 等效于 fs.readFile() -> 到 -> 在 DOM 中上传 HTML
- python - 更新矢量化函数内的 tqdm 进度条