pool-watch
v1.0.1
Published
A live chart of the distribution of promises across a promise pool.
Downloads
6
Readme
pool-watch
A live chart renderer of the distribution of promises across a promise pool.
Current version: 1.0.1
Lead Maintainer: Halim Qarroum
Install
$ npm install --save pool-watch
Description
The pool-watch
module has been written to monitor the distribution of promise executions within a promise pool instance, by displaying a live chart of the state of the promise pool executors.
This module is only compatible with a
promise-pool
, and will not work for other pool implementations.
Usage
To use pool-watch
, simply require it into your application.
const watch = require('pool-watch');
The returned watch
function takes as an input a reference to the promise pool, as well as an options
object which will be forwarded to progress-string
which is used to create the chart.
The options you can pass as a second argument to watch
are the following :
total
- (integer) The maximum amount of promises you would like to monitor (mandatory).width
- (integer, default: 42) The width of the progress bar in charsincomplete
- (string, default:-
) The char used to indicate the incomplete part of the progress barcomplete
- (string, default:=
) The char used to indicate the completed part of the progress barstyle
- (function, optional) Seeoptions.style
below for details
For more informations on the
options object
, see theprogress-string
module.
Return value
The returned value of a call to the watch
function is a Node.js Stream, allowing you to .pipe()
the live chart to any writable stream (e.g process.stdout
, or a net.Socket
for remote monitoring with netcat
).
Example
// Creating the promise pool with `5` executors.
const pool = new Pool(5);
// The number of promises we'll insert.
const total = 1000;
// Configuring `watch` to display the live chart on `stdout`.
watch(pool, { total }).pipe(process.stdout);
// Scheduling promises in the pool.
for (let i = 0; i < total; ++i) {
pool.schedule(() => new Promise((r) => setTimeout(r, 200)));
}