1.2.6 • Published 7 months ago

exframe-worker-pool v1.2.6

Weekly downloads
-
License
ISC
Repository
bitbucket
Last release
7 months ago

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

fieldtypedescription
maxintegerdefault = 10the maximum number of concurrent workers that may be executing
overflowintegerdefault = 5the 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

fieldtypedescription
priorityintegerdefault = 1the priority assigned to the work -- priority is sorted descending, so something with a higher priority will execute first
forcebooleandefault = falseflag 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

fieldtypedescription
priorityintegerdefault = 1the priority assigned to the work -- priority is sorted descending, so something with a higher priority will execute first
forcebooleandefault = falseflag 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

eventparametersdescription
emptynullFires 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

1.2.6

7 months ago

1.2.5

8 months ago

1.2.4

1 year ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.0

2 years ago

1.2.1

2 years ago

1.1.0

2 years ago

1.1.3

2 years ago

1.0.1

3 years ago

1.0.0

3 years ago