Task executor for Rubik
Runs tasks delayed in time in Rubik's app.
Install
Via Yarn:
yarn add rubik-tasks
or NPM:
npm install rubik-tasks
Use
- Connect it to an app. Config and Log kubiks are required:
const path = require('path');
const { App, Kubiks } = require('rubik-main');
const Tasks = require('rubik-tasks');
const app = new App();
app.add([
new Kubiks.Config(path.join(__dirname, './default/')),
new Kubiks.Log,
new Tasks(path.join(__dirname, './tasks/'))
]);
app.up().
then(() => {
app.log.info('App is up');
}).
catch((err) => {
app.log.error('App is down');
app.log.error(err);
})
- Create
tasks
folder, and tasks within ittasks/myFirstTask.js
module.exports = {
name: 'My first task',
description: 'Just push message to logs time by time',
time: '10:00',
jobs: [function(tasks, app, task) {
app.log.info('The texty text from', task.name);
}]
};
Now when the application ups, the task ”My first“ task will be queued for execution at 10am.
Task options
-
id
is an id of the task, it is not required, and used to manually stop the task; -
name
is a name of the task, it is not required; -
description
is a description of the task, it is not required; -
time
is a time of day, when the task should be started. Format is HH:mm; -
period
is the frequency in seconds when the task will be executed; -
jobs
is an array of functions, they are called one after another when the task is executed; -
arguments
is an array of additional variables for task's functions, they are they are placed at the beginning of the function arguments; -
once
is a flag to start task once; -
context
is a context of funtions inside jobs.
You can use placeholders for a period
option:
-
1w
— a week; -
1d
— a day; -
1h
— a hour; -
1m
- a minute.
Manualy add tasks
Just use add
method:
tasks.add(task);
If you added a task before upping the app, then you no longer need to do anything.
If app is upped, you should start task manually:
const task = tasks.add(rawTask);
tasks.start(task);
Stop task
Just use stop
method:
tasks.stop(taskId);