cron-scheduler
Runs jobs in periodic intervals
cron-scheduler is a way to run functions at specific times of the day. It runs
in Node.js as well as the browser.
It requires a Promise implementation to work. If you're on Node.js v4 or
later, you should be fine. Otherwise, you'll also need to install
bluebird, rsvp, when, or [q.js][].
cron()
cron(options, function)
Starts a cronjob.
cron({ on: '0 9 * * *' }, function () {
console.log('this will run every 9:00am')
})
You can pass more options.
on
(String, required) - the schedule in cron format (min hour day month day-of-week
).timezone
(String) - the timezone to run it in.name
(String) - identifier to show in the debug logs. Means nothing
if debugging is off.
cron({
timezone: 'Asia/Manila'
on: '0 9 * * *',
name: 'dostuff'
} , function () {
console.log('this will run every 9:00am')
})
The options.on
parameter is in cron standard format. Check the cron
cheatsheet for more details.
Any errors will be thrown, and will stop the scheduler. If this is not
what you want, you may wish to decorate the function being passed.
cron({ on: '0 9 * * *' }, trap(work))
function trap (fn) {
return function () {
return Promise.resolve(fn.apply(this, arguments))
.catch(function (err) {
})
}
}
If function
returns a Promise, it will wait for it to finish before
scheduling the next job. If the promise is rejected, it will be an unhandled
rejection (!). You may use the same trap()
decorator trick above to get
around this.
To stop the cronjob, just run the stop
method returned by cron()
.
job = cron({ on: '0 12 * * *' }, work)
job.stop()
To manually invoke the cronjob, run the run
method returned by cron()
.
job = cron({ on: '0 12 * * *' }, work)
job.run()
cron.debug
cron.debug(function)
Sets the debug function.
cron.debug(console.log.bind(console))
You can pass your custom logger here. For instance, you can use the debug
module for prettier messages.
cron.debug(require('debug')('cron'))