persist-jobs

1.1.0 • Public • Published

Build StatusCoverage Status

persist-jobs

Persistent Job Scheduler for Node (SQL)

Goal

  • simple to use and configure.
  • persistent/restart/crash-tolerant: after scheduling, schedule process can die and whenever it's restarted it'll run whatever jobs are necessary.
  • not a footgun: throw helpful errors if dev tries to do something like schedule jobs that aren't registered.
  • zero dependences.

How to use

const Jobs = require("persist-jobs")({sql: executeSqlPromise})
Jobs.start({intervalMs: 1000})
 
function someFunc (a, b) { console.log("someFunc!", a, b) }
Jobs.register(someFunc) // lets scheduler know what to call when it sees a job called 'someFunc'
 
const someDate = new Date().toISOString() // date comes out as "2018-07-18T16:22:00-05"
Jobs.schedule(someDate, someFunc, {subject: "foo"}, 2)
 
// at 2018-07-18 16:22:00-05, console should output someFunc! {subject: "foo"} 2
 
Jobs.stop()

Setup

  1. create the table in your SQL database. (Note the table name can be configured.)
CREATE TABLE Jobs (
  job_id SERIAL PRIMARY KEY,
  due_at TIMESTAMP WITH TIME ZONE NOT NULL,
  type TEXT NOT NULL,
  args TEXT-- Stringified JSON 
  run_at TIMESTAMP
);
  1. Install and use as per the example above.
npm install --save persist-jobs
  1. Require and instantiate the Jobs singleton
const Jobs = require("persist-jobs")({sql: executeSqlPromise}) // executeSqlPromise :: SqlString

Config Options

Jobs {
  sql: Function, // Required function that accepts a SQL string and returns a Promise of the results resolving as JSON.
  table: String, // Name of the SQL table. Defaults to "Jobs".
}
Jobs.start {
  intervalMs: Number // Number of milliseconds between checks for jobs to run.
}

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.0
    0
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.1.0
    0
  • 1.0.0
    0

Package Sidebar

Install

npm i persist-jobs

Weekly Downloads

0

Version

1.1.0

License

MIT

Unpacked Size

33.6 kB

Total Files

8

Last publish

Collaborators

  • mluby