当前位置: 首页 > 知识库问答 >
问题:

谷歌云平台-使用puppeteer优化云功能(node.js)

徐欣德
2023-03-14

因此,你对以下方面有何建议:

  • 为了使功能更有效,我应该更改哪些功能?
  • 使我的函数自动化以便每小时运行一次的另一种方法?

FYI my cloud功能具有以下特点:

    null
exports.launchSearch = (req, res) => {

const puppeteer = require('puppeteer');
const url = require('./pageInformation').url;
const pageLocation = require('./pageInformation').location;
const userInformation = require('./userInformation').information;

(async () => {
    const browser = await puppeteer.launch({args: ['--no-sandbox']});
    const page = await browser.newPage();
    await page.goto(url);

    // Part 1
    await page.click(pageLocation['...']);
    await page.type(pageLocation['...'], userInformation['...']); 
    await page.waitFor(pageLocation['...']);
    await page.click(pageLocation['...']);
    ... ~20 other "page.click" or "page.select"

    // Part 2
    var continueLoop = true;

    while (continueLoop) {

        var list = await page.$x(pageLocation['...']);

        if (list.length > 0) {
            await list[0].click();
            var found = true;
            var continueLoop = false;
        } else {
            var afficher = await page.$x(pageLocation['...']);
            if (afficher.length > 0) {
                await afficher[0].click();
            } else {
                var continueLoop = false;
                var found = false;
            };
        };
    };

    // Part 3
    if (found) {
        await page.waitForXPath(pageLocation['...']);
        const xxx = await page.$x(pageLocation['...']);
        await xxx[0].click();
        ... 5 other blocks with exact same 3 lines, but with other elements to click
    };

    await browser.close();
})();

};

共有1个答案

茹正祥
2023-03-14

如果没有太多关于代码功能的上下文,就很难指出根本原因,但我要告诉你的是按照Horatio的建议继续调试代码,或者可以使用更复杂的工具,如StackDriver来监视云功能的性能。评估它的价格,如果你有兴趣。

如果Stackdriver是一个过度使用,只需使用内联函数包装来找出消耗所有时间的例程的确切位置。下面是一个例子:

var start = process.hrtime();
yourfunction();
var elapsed = process.hrtime(start)[1] / 1000000;

console.log("Elapsed:" + elapsed.toFixed(3));

一旦您得到了影响执行的确切代码段,那么您可能必须对其进行优化。此外,正如我所理解的那样,在本地它工作得很好,考虑到有时在云环境中运行的进程会受到延迟的影响,因为它们消耗的其他资源“接近”。

 类似资料:
  • 对于这个问题,这里可能是错误的地方,所以如果有必要,请重新指示我。 我使用Google Cloud函数部署了几个简单的函数,它们可以实现以下功能: 从AWS读取文件并写入云SQL 我将这些函数作为单独的函数,因为(1)通常需要比云函数最大超时更长的时间。正因为如此,我正在考虑将这一切作为一项服务转移到App Engine。关于应用程序引擎标准,我的问题是: 请求超时是什么意思?如果我运行这个服务,

  • 上面写着“Google Cloud Messaging(GCM)是一个免费服务”,但是为了使它能够运行,我需要在Google Cloud平台中创建一个项目,这需要花钱…那怎么免费呢?还是我错过了什么?

  • null 我的用户应该能够创建只有计算迫害管理和计算网络管理角色的项目吗?

  • 刚刚完成Hello World谷歌云功能教程,收到以下响应头:

  • 有没有可能重新命名一个谷歌云平台项目?如果是,怎么做? 我不需要更改项目ID或编号。但我确实想更改项目名称(人类用来标识云平台项目的名称)。 谢谢你的提示!

  • 这是一个比我来这里更简单的问题,但我一直在努力寻找答案,但我绝对不能- 我知道我总是可以通过另一种方式,但这更干净,更符合我们想要使用的设置,所以我真的很想让它工作,如果可能的话。有什么方法可以做到这一点,我完全不知道还是根本不支持?