gpt4 book ai didi

javascript - Puppeteer 在 Google Cloud Functions 上执行缓慢

转载 作者:行者123 更新时间:2023-12-02 23:53:48 25 4
gpt4 key购买 nike

我在 Google Cloud Functions 上使用 Puppeteer。

经过几次测试,我发现我的代码部署在 Google Cloud Functions 基础架构上时平均需要大约 56 秒,而在本地测试相同的函数只需要 13 秒。

index.js

const chromium = require('chrome-aws-lambda');
const puppeteer = require('puppeteer-core');
const functions = require('firebase-functions');

exports.check = functions.https.onRequest(async (req, res) => {
const License = req.query.License;

browser = await puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath,
headless: chromium.headless,
});
const page = await browser.newPage();

await page.goto('http://www.example.com', {waitUntil: 'networkidle2'});
await page.focus('#txtUserName');
await page.keyboard.type('testUsername');
await page.focus('#txtPassword');
await page.keyboard.type('123123');
await page.click('#btnLogin');
await page.waitForSelector('#ctl00_400_header_400')
//console.log("[✓]login successfully.")
await page.evaluate(() => document.querySelector('#ctl00_400_header_400').click());
await page.waitForSelector('#__tab_ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim')
//console.log("[✓]Enquriy page loaded successfully")
await page.evaluate(() => document.querySelector('#__tab_ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim').click());
await page.waitForSelector('#ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim_rdvehicleSearchLicense')
//console.log("[✓]Claim section loaded successfully")
await page.evaluate(() => document.querySelector('#ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim_rdvehicleSearchLicense').click());
//console.log("[✓]License tap loaded successfully")
await page.waitForSelector('#ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim_txtclaimSearchPersonLicNo');
await page.focus('#ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim_txtclaimSearchPersonLicNo');
await page.keyboard.type(License);
await page.evaluate(() => document.querySelector('#ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim_btnVheicleSearchButtonClaim').click());

try {
await page.waitForSelector('#ctl00_ContentPlaceHolder1_lblErrMessage')
const textContent = await page.evaluate(() => document.querySelector('#ctl00_ContentPlaceHolder1_lblErrMessage').textContent);
res.status(200).send( 'Result => ' + textContent );
await browser.close();
} catch (error) {
//console.log("The element didn't appear.")
}

try {
await page.waitForSelector('#ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim_grdClaimDraftSp > tbody > tr:nth-child(3) > td')
const textContent = await page.evaluate(() => document.querySelector('#ctl00_ContentPlaceHolder1_tabQuickSearch_vehicleSerachClaim_grdClaimDraftSp > tbody > tr:nth-child(3) > td').textContent);
res.status(200).send( 'Result => ' + textContent );
await browser.close();
} catch (error) {
//console.log("The element didn't appear.")
}

});

包.json

{
"name": "functions",
"version": "0.0.1",
"description": "Cloud Functions for Firebase",
"dependencies": {
"chrome-aws-lambda": "1.14.0",
"firebase-functions": "2.2.0",
"iltorb": "2.4.2",
"puppeteer-core": "1.14.0",
"firebase-admin": "7.2.0"
},
"engines": {
"node": "8"
},
"private": true
}

使用分配的 NodeJS 8 和 2 GB 内存通过 Firebase 功能进行部署。

如何改进我的代码以加快执行时间?

最佳答案

我认为期望任何给定的代码在 Cloud Functions 中运行得像在任何现代桌面上一样快是不好的,尤其是不像 Puppeteer(本质上运行 Chrome)那样复杂的代码。

GCF 仅将单个 CPU 分配给任何给定的服务器实例。它没有 GPU。 GCF 适用于不需要大量计算的简单工作。台式机通常具有 4-8 个核心(或更多)和一个 GPU,可帮助 Chrome 快速运行。这两种情况确实没有可比性。

底线是,对于这段代码,您无法做太多事情来加速它以符合桌面体验。

关于javascript - Puppeteer 在 Google Cloud Functions 上执行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55521179/

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