Skip to content

Reuse browser process to improve lambda performance? #217

Open
@Mihailoff

Description

@Mihailoff

Did anyone try to cache browser process and simply connect/disconnect with every lambda run? So far seem to work well.

const chromium = require('chrome-aws-lambda')

let browserWSEndpoint

module.exports.handler = async function (event) {
  let browser = null

  try {
    if (browserWSEndpoint) {
      browser = await chromium.puppeteer.connect({ browserWSEndpoint })
    }
    else if (!browser || !browser.isConnected()) {
      browser = await chromium.puppeteer.launch({
        args: chromium.args,
        defaultViewport: chromium.defaultViewport,
        executablePath: await chromium.executablePath,
        headless: chromium.headless,
      })

      browserWSEndpoint = browser.wsEndpoint()
    }

    // ...

  } finally {
      if (browser) browser.disconnect()
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions