A library for managing a maximum number of concurrent work items locally and scheduling what comes next by priority
npm install exframe-worker-pool
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
})
Manages the set of concurrent work and schedules what comes next by priority
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 |
Takes a worker resource from the pool, once the calling code is done, it will need to call release
on the worker
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 |
Releases the worker resource back to the worker pool
Executes the given callback immediately or once the pool has freed enough worker resources to allow the given callback to execute
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 |
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 |
The number of worker that are currently executing
The number of work items waiting to execute
The maxmium number of concurrent workers
The buffer of work items over the max that can be forced into the pool
The ratio of the current working count over the sum of max and overflow
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>