New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

spam

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

spam

Wrapper around cluster module to simplify multi-process work

latest
Source
npmnpm
Version
0.2.9
Version published
Maintainers
1
Created
Source

Simple Process Manager (SPaM)

Version Downloads Build Status Known Vulnerabilities Coverage Status

SPAM is a module for simple node.js process management, and wraps the cluster module. It has nothing to do with email spam.

Use

Yarn is recommended as a package manager, but npm can be used as an alternative.

To install:

# install yarn if required
npm install -g yarn
yarn add spam

To create some processes, using the spawn method. This takes the following parameters:

  • Configuration object
    • number (number of processes to spawn, e.g. 4)
    • timeout (time in milliseconds to allow each spawn to occur, before timing out)
    • strategy (either 'series', or 'parallel', to spawn one at a time, or all together)
    • readyOn (what signal indicates the script is ready, 'ready' or 'listening' - default)
  • Callback when initialization of the module is complete
var spam = require('spam');

// to create 4 processes using the myscript.js script - ready on listen(),
// created in parallel, with a timeout of 60 seconds
spam.setScript('./myscript.js');
spam.spawn(
  {
    number: 4,
    timeout: 60000,
    strategy: 'parallel'
  }, function(err) {
      // callback occurs when all processes have declared they are working
      // or a timeout occurs
      if (err) {
        console.log('oops');
      }
});

// to create 2 processes callback is called when 'ready' message sent, not on 'listen'
// created in series, with no timeout
spam.spawn(
  {
    number: 2,
    timeout: 0,
    strategy: 'serial',
    readyOn: 'ready'
  },  function(err) {
      // callback occurs when all processes have declared they are working
      // or a timeout occurs
      if (err) {
        console.log('oops');
      }
});

If you want to log what's going on in SPAM

spam.on('log', function(message) {
  // do some logging
  console.log('SPAM: ' + message);
});

If you want to gracefully restart all the processes, by starting a new worker before killing the old worker, do this with the restart method.

// graceful restart of all the processes
spam.restart({ strategy: 'series' }, function(err) {
  if (err) {
    console.log('oops');
  }
});

To stop all the processes:

// stop all
spam.stop(function() {
  console.log('stop initiated')
});

NOTE: The scripts that are run, either need to run server.listen() or emit a specific 'ready' message. If they do not do this, then SPAM will assume they've not started and time them out. You can emit a 'ready' message using a convenience function or explicitly using process.send();

// using the signal module
var signal = require('spam').signal;
signal.ready();

// using the process.send method
process.send({ cmd: 'ready'});

Tests

To run the npm unit tests, install development dependencies and run tests with 'npm test' or 'make'.

# clone repo and install dependencies
git clone git@github.com:iandotkelly/spam.git
cd spam
yarn
# run tests
yarn test

Coverage can be measured after running the tests, and an html coverage report is written in the coverage/lcov-report directory:

open coverage/lcov-report/index.html

If you contribute to the project, tests are written in mocha, using should.js or the node.js assert module.

Keywords

multi-process

FAQs

Package last updated on 24 Mar 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts