@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.

/@sameke/task-container/

    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