Skip to content
This repository was archived by the owner on Jan 30, 2020. It is now read-only.

opallabs/castelet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

229 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Castelet

Easy, async Puppeteer Pool

It's as simple as it gets

It's just a wrapping of lightning-pool around puppeteer, with a few additions.

To keep with the design of puppeteer-pool, it adds a use method, that can be used just like theirs:

This is the easiest method of use.

import { createPool } from 'castelet'

const pool = createPool({
  min: 1,
  max: 10,
})

pool.use(async browser => {
  const page = await browser.newPage()
  const status = await page.goto('http://google.com')
  if (!status.ok) {
    throw new Error('cannot open google.com')
  }
  const content = await page.content()
  page.close()
  return content
})

It's all async, and usage is just like any other generic-pool-like system:

import { createPool } from 'castelet'

const pool = createPool({
  min: 1,
  max: 10,
})

pool.acquire(browser => {
  const page = await browser.newPage()
  const status = await page.goto('http://google.com')
  if (!status.ok) {
    throw new Error('cannot open google.com')
  }
  const content = await page.content()
  page.close()
  pool.release(browser) // the important bit!
  return content
})

Note: be sure to pool.release(browser) when you're done. Otherwise the browser will not be released back to the pool (and cleared of its pages). It's much easier to use the above syntax.

About

An easy, async Puppeteer pool

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors