A simple cron system for Meteor. It supports syncronizing jobs between multiple processes.
SyncedCron can be installed with Meteorite. From inside a Meteorite-managed app:
$ mrt add synced-cron
To write a cron job, give it a unique name, a schedule an a function to run like below. SyncedCron uses the fantastic later.js library behind the scenes. A Later.js parse
object is passed into the schedule call that gives you a huge amount of flexibility for scheduling your jobs, see the documentation.
SyncedCron.add({
name: 'Crunch some important numbers for the marketing department',
schedule: function(parser) {
// parser is a later.parse object
return parser.text('every 2 hourss');
},
job: function() {
var numbersCrunched = CrushSomeNumbers();
return numbersCrunched;
}
});
To start processing your jobs, somewhere in your project add:
Meteor.startup(function() {
SyncedCron.start();
});
SyncedCron uses a collection called cronHistory
to syncronize between processes. This also serves as a useful log of when jobs ran along with their output or error. A sample item looks like:
{ _id: 'wdYLPBZp5zzbwdfYj',
intendedAt: Sun Apr 13 2014 17:34:00 GMT-0700 (MST),
finishedAt: Sun Apr 13 2014 17:34:01 GMT-0700 (MST),
name: 'Crunch some important numbers for the marketing department',
startedAt: Sun Apr 13 2014 17:34:00 GMT-0700 (MST),
result: '1982 numbers crunched'
}
Write some code. Write some tests. To run the tests, do:
$ mrt test-packages synced-cron
MIT. (c) Percolate Studio
Synced Cron was developed as part of the Verso project.