exframe-worker-pool
v1.2.6
Published
exframe Worker Pool ===================
Downloads
6,613
Readme
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
|integerdefault = 10|the maximum number of concurrent workers that may be executing|
|overflow
|integerdefault = 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
|integerdefault = 1|the priority assigned to the work -- priority is sorted descending, so something with a higher priority will execute first|
|force
|booleandefault = 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
|integerdefault = 1|the priority assigned to the work -- priority is sorted descending, so something with a higher priority will execute first|
|force
|booleandefault = 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