slave

1.2.2 • Public • Published

slave

NPM version Build status Test coverage Dependency Status License Downloads Gittip

Slave is a tiny utility to allow you to create long-running slave processes for your node process and use these functions as promises. Create modules that run in separate processes without anyone even knowing!

Walkthrough

Wrap your function in a slave. The function must either:

  • Be a co-based generator function
  • A function that returns a promise
  • A synchronous function

Now, create a separate my-module/slave.js file:

var slave = require('slave/slave');
var fn = require('./index.js'); // my main module
slave(fn); // it's wrapped!

Now you can create a my-module/master.js file, which runs slave.js:

var master = require('slave/master');
module.exports = master(require.resolve('./slave.js'))

Now users have two ways to use this module. Directly:

var fn = require('my-module');
 
fn(1, 2).then(function (val) {
 
});

Using child processes:

var fn = require('my-module/master');
 
fn(1, 2).then(function (val) {
 
});

API

var fn = slave.master(slavepath, [options])

Create a function from a slavepath, which exports a slave.slave() function.

Options are:

  • forks=0 - number of child processes to initiate immediately

fn will always return a promise, even if the wrapped function is synchronous.

fn.fork()

Create a new child process.

slave.slave(fn)

Hooks a function into process to allow the parent process to listen.

Package Sidebar

Install

npm i slave

Weekly Downloads

1,826

Version

1.2.2

License

MIT

Last publish

Collaborators

  • jongleberry