This package has been deprecated

Author message:

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

task-container
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

task-container

Node async task runner. Allows user to create and run Node tasks in seperate process.

The child task should export a function that accepts input data object and a callback as the second parameter or must return a promise.

Example

childTask.js w/ callback

module.exports = (data, callback) => {
  setTimeout(() => {
    callback([error], [result]);
  }, 5000)
}

childTask.js w/ promise

module.exports = (data) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve([result]);
    }, 5000);
  });  
}

main.js

const TaskContainer = require('task-container');
const TaskRunner = require('task-container').TaskRunner;
 
let tc = new TaskContainer();
tc.run(require.resolve('./childTask'), {test: 'hello world'}).then((result) => {
  console.log(result);
});
 
//or
 
(async () => {
  try {
    let result = await tc.run(require.resolve('./childTask'), {test: 'hello world'});
  } catch(ex){
    console.log(ex);
  }
})();
 

API

new TaskContainer([options])

options

{
  maxTaskRunners: [number], //default: require('os').cpus().length - 1,
  maxCallsPerTaskRunner: [number], //default: Infinity
}
  • maxTaskRunners

    Number of child processes to spawn for handling tasks. If all child processes are currently busy the task will be queued and handled as soon as a handler is free. Task are processed in FIFO order.

  • maxCallsPerTaskRunner

    Number of times to call a child task before recycling the process (killing current child process and starting a new one). This can be used to manage memory leaks until they can be fixed.

taskContainer.run(script, [data])

script
This is the path to the module you wish to run as a task. This script should export a method which takes an object as it's first parameter and a callback as the second.
Example:

module.exports = (data, callback) => {
  //do work here
  callback([error], [result]);
}

data
Object you wish to be passed to the task.

callback
Method which gets called when task has completed.

taskRunner.run(script, [data])

Works the same as TaskContainer, but is for running a single task. do not use to run multiple tasks simultaneously, use TaskContainer

Dependencies (0)

    Dev Dependencies (2)

    Package Sidebar

    Install

    npm i task-container

    Weekly Downloads

    17

    Version

    1.0.6

    License

    MIT

    Unpacked Size

    34.8 kB

    Total Files

    27

    Last publish

    Collaborators

    • weagle08