Skip to content
Sails JS hook to add async background jobs, using agenda (
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


Sails JS hook to add async background agenda.

This project use "agenda" as the job engine

Agenda is a light-weight job scheduling library for Node.js. And it's use mongodb. a

This hook has been tested with sails 0.12.3


npm install sails-hook-jobs


Copy this configurations file and save it to config/jobs.js

 * Default jobs configuration
 * (
 * For more information using agenda in your app, check out:
 */ = {

  // Where are jobs files
  "jobsDirectory": "api/jobs",

  // agenda configuration.
  // for more details about configuration,
  // check
  "db": {
    "address"    : "localhost:27017/jobs",
    "collection" : "agendaJobs"
  "name": "process name",
  "processEvery": "10 seconds",
  "maxConcurrency": 20,
  "defaultConcurrency": 5,
  "defaultLockLifetime": 10000

How to define and schedule jobs

Simply create a js file (name ending with Job.js, eg: myJob.js) in api/jobs or in the 'jobsDirectory'. (coffee script supported.)

module.exports = function(agenda) {
    var job = {

        // job name (optional) if not set,
        // Job name will be the file name or subfolder.filename (without .js)
        //name: 'Foo',

        // set true to disabled this job
        //disabled: false,

        // method can be 'every <interval>', 'schedule <when>' or now
        //frequency supports cron strings
        frequency: 'every 5 seconds',

        // Jobs options
        //options: {
            // priority: highest: 20, high: 10, default: 0, low: -10, lowest: -20
            //priority: 'highest'

        // Jobs data
        //data: {},

        // execute job
        run: function(job, done) {
            console.log("Foo job executed");
    return job;

What you get ?

Once the hook started, you will have a new global object 'Jobs' wich is the instance of Agenda engine.

You can use it like that'jobname', data)
Jobs.schedule('tommorrow at noon', 'jobname', {})

All found jobs with a run function will be defined and all jobs with freq will be sheduled.

Problems to solve

  • How to stop agenda correctly on sails lowering ??
  • Purging jobs ??
You can’t perform that action at this time.