
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
Job is a module that allows other modules to expose delayed jobs. For example, instead of mailer.sendRegistrationEmail, you can do mailer.delay.sendRegistrationEmail.
Job is a delayed jobs scheduler inspired by the Ruby project delayed_job and written for SpanDeX.io.
Where before you might write mailer.registrationEmail('userID'), you can now write mailer.delay.registrationEmail(5*1000, 'medium', 'userID') to delay the email by 5 minutes.
Add to package.json and install via npm:
npm install job
And wherever you bootstrap your application, you need to require('job') and initialize it:
require('job').startJobsRunner({ kue: { username: 'example', password: 'password', port: 2442 }})
Optionally, you may provide the path of an initialization script that will bootstrap the jobs runner, since all delayed jobs are run in a separate process. You may need to initialize a database connection, for example. In the future I would like to better support Architect plugins to eliminate the need for a dedicated startup script.
require('job').startJobsRunner({ initScript: './init_job_worker.js', kue: { username: 'example', password: 'password', port: 2442 }})
And the initialization script should be in the form:
module.exports = function initJobsWorker (done) {
// Initialize database connections, etc
done();
};
Then, in any modules where you want to have a delayed job:
exports.registationEmail = function (userID) {
model.Users.findById(userID).exec(function (err, user) {
// ... send out email
});
};
becomes:
exports.registationEmail = function (userID) {
model.Users.findById(userID).exec(function (err, user) {
// ... send out email
});
};
exports.registationEmail.delayable = true;
require('job').addHelper(module);
That's it! Note that your helper method must take database IDs, not objects; generally, anything passed into the helper method will first be serialized into Redis, and furthermore will be accessed in a different process. Thus, things like Mongoose objects or anything that requires lookup in an in-memory cache are out.
Delay the method by calling:
lib.delay.registrationEmail(ms, 'priority', args)
where ms is the number of milliseconds to delay by, and priority is 'low', 'medium', 'high', or 'critical'.
Job can also be used as a simple queue server. For example, if you want to perform an operation ASAP but only want to perform X operations simultaneously:
exports.method = function () { ... }
exports.method.delayable = true;
exports.method.concurrentProcesses = 5;
Then, you can call lib.delay.method(0, 'critical', ...).
By default, concurrentProcesses is 1.
Job uses a Kue server to process jobs. The Kue username, password, and port you provide can be used to monitor the status of delayed jobs.
For example, if SpanDeX.io had supplied a port of 1234, we could go to SpanDeX.io:1234, type in the username and password, and monitor the health of all delayed jobs.
Joshua Gross, josh@spandex.io (creator)
MIT license.
FAQs
Job is a module that allows other modules to expose delayed jobs. For example, instead of mailer.sendRegistrationEmail, you can do mailer.delay.sendRegistrationEmail.
The npm package job receives a total of 94 weekly downloads. As such, job popularity was classified as not popular.
We found that job demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.