https://github.com/dutu/taskworker
running tasks repetitively
https://github.com/dutu/taskworker
Last synced: 2 months ago
JSON representation
running tasks repetitively
- Host: GitHub
- URL: https://github.com/dutu/taskworker
- Owner: dutu
- License: mit
- Created: 2016-11-15T09:56:28.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-06-19T09:47:13.000Z (about 9 years ago)
- Last Synced: 2025-03-06T02:32:31.612Z (over 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 56.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
taskWorker
=======
[](https://travis-ci.org/dutu/taskWorker/) 
Provides a class that can easyly be extended for funning tasks repetitively
Example below defins a worker with a simple task `firstTask`, which logs to the console every second.
```js
class Worker extends TaskWorker {
constructor(workerName) {
super(workerName);
}
firstTask(next) {
console.log('log this text every 1000ms');
next(1000);
}
}
let worker = new Worker('workersName');
worker.registerTask('firstTask');
worker.runTask('firstTask');
```
A set of configuration parameters can be defined for each task.
Example:
```js
class Worker extends TaskWorker {
constructor(workerName) {
super(workerName);
}
firstTask(next) {
console.log('log this text every 1000ms');
next(1000);
}
}
let worker = new Worker('workersName');
worker.registerTask('firstTask');
let extendedSchema = {
newConfigParameter: {
type: String,
default: 'a default value',
},
};
worker.setExtendedTaskConfigSchema('firstTask', extendedSchema);
worker.runTask('firstTask');
```
## Logger
`TaskWorker` uses [winston](https://www.npmjs.com/package/winston) for logging.
The default logger has the Console transport defined as follwing:
```js
let defaultLogger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
colorize: 'all',
json: 'true',
})
],
});
defaultLogger.setLevels(winston.config.syslog.levels);
```
You can add or remove transports via the `addLoggerTransport()` and `removeLoggerTransport()` methods:
```js
worker.addLoggerTransport(winston.transports.File, { filename: 'somefile.log' });
worker.removeLoggerTransport(winston.transports.Console);
```
## Methods
### getStatus()
Example:
```js
worker.getStatus();
```
Example result:
```js
{
"worker": {
"restartedAt": "2016-11-08T10:12:42.739Z"
},
"tasks": [
{
"taskName": "firstTask",
"startedAt": "2016-11-08T10:12:42.684Z",
"shouldRun": false,
"state": "stopped",
"lastRunAt": "1970-01-01T00:00:00.000Z",
"delayedMS": null
}
],
"dbConnection": {
"state": null
}
}
```
### setExtendedTaskConfigSchema()
Extends the default task configuration schema. Schema is a JSON that follws moongoose schema types
The default task configuration schema is:
```js
{
taskName: {
type: String
},
startedAt: {
type: Date,
default: new Date(),
},
shouldRun: {
type: Boolean,
default: false,
},
}
```
**Example:**
```js
let extendedSchema = {
newConfigParameter: {
type: String,
default: 'defaultValue',
},
};
worker.setExtendedTaskConfigSchema(extendedSchema);
worker.getStatus();
```
Result:
```js
{
"worker": {
"restartedAt": "2016-11-08T10:23:21.297Z"
},
"tasks": [
{
"taskName": "firstTask",
"startedAt": "2016-11-08T10:12:42.684Z",
"shouldRun": false,
"state": "stopped",
"lastRunAt": "1970-01-01T00:00:00.000Z",
"delayedMS": null,
"newConfigParameter": "default value",
}
],
"dbConnection": {
"state": null
}
}
```
# License #
[MIT](LICENSE)