2.3.0 • Published 4 years ago
rubik-tasks v2.3.0
Task executor for Rubik
Runs tasks delayed in time in Rubik's app.
Install
Via Yarn:
yarn add rubik-tasksor NPM:
npm install rubik-tasksUse
- 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
tasksfolder, 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
idis an id of the task, it is not required, and used to manually stop the task;nameis a name of the task, it is not required;descriptionis a description of the task, it is not required;timeis a time of day, when the task should be started. Format is HH:mm;periodis the frequency in seconds when the task will be executed;jobsis an array of functions, they are called one after another when the task is executed;argumentsis an array of additional variables for task's functions, they are they are placed at the beginning of the function arguments;onceis a flag to start task once;contextis 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);