exframe-worker-pool
TypeScript icon, indicating that this package has built-in type declarations

1.2.6 • Public • Published

exframe Worker Pool

A library for managing a maximum number of concurrent work items locally and scheduling what comes next by priority

installation

npm install exframe-worker-pool

usage

const { WorkerPool } = require('exframe-worker-pool');

const pool = new WorkerPool();
const result = await pool.work(async () => {
  return 10;
});
console.log(result); // 10

pool.eventEmitter.on('empty', () => {
  return 'pool is empty'; //fires when count === 0
})

class WorkerPool

Manages the set of concurrent work and schedules what comes next by priority

constructor(options?) => WorkerPool

type options

field type description
max integer
default = 10
the maximum number of concurrent workers that may be executing
overflow integer
default = 5
the buffer over the maximum concurrent workers reserved for executing with the forced flag -- queued work cannot execute until after the workingCount reduces to less than max

async take<T>(options?) => Promise<Worker>

Takes a worker resource from the pool, once the calling code is done, it will need to call release on the worker

type options

field type description
priority integer
default = 1
the priority assigned to the work -- priority is sorted descending, so something with a higher priority will execute first
force boolean
default = false
flag to indicate that the work can execute within the overflow buffer if max concurrency has been reached

type Worker

release() => void

Releases the worker resource back to the worker pool

async work<T>(callback: () => Promise<T>, options?) => Promise<T>

Executes the given callback immediately or once the pool has freed enough worker resources to allow the given callback to execute

type options

field type description
priority integer
default = 1
the priority assigned to the work -- priority is sorted descending, so something with a higher priority will execute first
force boolean
default = false
flag to indicate that the work can execute within the overflow buffer if max concurrency has been reached

eventEmitter: EventEmitter

Event emitter that exposes the following events

event parameters description
empty null Fires whenever a worker is released and the count is reduced to 0

workingCount: number

The number of worker that are currently executing

queuedCount: number

The number of work items waiting to execute

max: number

The maxmium number of concurrent workers

overflow: number

The buffer of work items over the max that can be forced into the pool

fillRatio: number

The ratio of the current working count over the sum of max and overflow

queuedRatio: number

The ratio of the queued count over the sum of max and overflow

<style> .fields table { width: 100%; } .fields table th:first-of-type { width: 75px; } .fields table th:nth-of-type(2) { width: 100px } </style>

Readme

Keywords

none

Package Sidebar

Install

npm i exframe-worker-pool

Weekly Downloads

1,134

Version

1.2.6

License

ISC

Unpacked Size

33 kB

Total Files

22

Last publish

Collaborators

  • exzeodevops