Skip to content

thenables/slave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

seamlessly create long-running child processes

Resources

License

Stars

Watchers

Forks

Packages

No packages published