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 = sql: executeSqlPromiseJobsstartintervalMs: 1000 { console }Jobs // lets scheduler know what to call when it sees a job called 'someFunc' const someDate = // date comes out as "2018-07-18T16:22:00-05"Jobs // at 2018-07-18 16:22:00-05, console should output someFunc! {subject: "foo"} 2 Jobs
Setup
- create the table in your SQL database. (Note the table name can be configured.)
( job_id SERIAL PRIMARY KEY, due_at TIMESTAMP WITH TIME ZONE NOT NULL, type TEXT NOT NULL, args TEXT, -- Stringified JSON run_at TIMESTAMP);
- Install and use as per the example above.
npm install --save persist-jobs
- Require and instantiate the Jobs singleton
const 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".Jobsstart intervalMs: Number // Number of milliseconds between checks for jobs to run.