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

3.0.1 • Public • Published

task-container

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

The child task is simply a module that exports a default function or a function named run. See definition for Task<T,S>.

Example

myTask.ts

export const run: Task<string, boolean> = async (msg: string): Promise<boolean> => {
    console.log(msg);
    return true;
}

or

myTask.ts

export async function run(msg: string): Promise<boolean> {
    console.log(msg);
    return true;
}

or

myTask.ts

export default async (msg: string) => {
    console.log(msg);
    return true;
};

then

main.ts

import {TasContainer} from '@sameke/task-container';
import path from 'path';

(() => {
    let taskPath = path.join(__dirname, './path/to/module/myTask');
    let taskContainer = new TaskContainer();

    let result = await taskContainer.run<string, boolean>(taskPath, 'hello world'); // prints hello word on a child process

    if (result == true) {
        console.log('task passed'); // prints task passed
    } else {
        console.log('task failed');
    }

    taskContainer.dispose();
})();

API

new TaskContainer([options])

options

{
  maxTaskRunners: [number], //default: 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(fullPath, [data])

fullPath
This is the path to the module you wish to run as a task. This script should export a default async function or an async function named run. See above example and type definition for Task (import {Task} from '@sameke/task-container').

data
Any object you wish to be passed to the task. Note that only properties can be passed across process, no functions will be retained.

Dependents (0)

Package Sidebar

Install

npm i @sameke/task-container

Weekly Downloads

10

Version

3.0.1

License

MIT

Unpacked Size

29.7 kB

Total Files

36

Last publish

Collaborators

  • weagle08