diff --git a/services/kue.js b/services/kue.js index ffaa817a4..1b3fb605a 100644 --- a/services/kue.js +++ b/services/kue.js @@ -138,3 +138,19 @@ if (process.env.NODE_ENV === 'test') { } else { module.exports.Task = Task; } + +module.exports.createTaskFactory = () => { + let taskInstance = null; + + return (options) => { + if (taskInstance) { + return taskInstance; + } + + options = Object.assign({}, options); + + taskInstance = new module.exports.Task(options); + + return taskInstance; + }; +}; diff --git a/services/mailer.js b/services/mailer.js index 7825ffd48..7212979df 100644 --- a/services/mailer.js +++ b/services/mailer.js @@ -1,6 +1,7 @@ const debug = require('debug')('talk:services:mailer'); const nodemailer = require('nodemailer'); const kue = require('./kue'); +const taskFactory = kue.createTaskFactory(); const path = require('path'); const fs = require('fs'); const _ = require('lodash'); @@ -69,7 +70,6 @@ if (SMTP_PORT) { } const defaultTransporter = nodemailer.createTransport(options); -let taskInstance = null; const mailer = module.exports = { @@ -77,15 +77,9 @@ const mailer = module.exports = { * Create the new Task kue. */ get task() { - if (taskInstance) { - return taskInstance; - } - - taskInstance = new kue.Task({ + return taskFactory({ name: 'mailer' }); - - return taskInstance; }, sendSimple({template, locals, to, subject}) { diff --git a/services/scraper.js b/services/scraper.js index 66eb32da6..40aac29ad 100644 --- a/services/scraper.js +++ b/services/scraper.js @@ -1,12 +1,11 @@ const kue = require('./kue'); +const taskFactory = kue.createTaskFactory(); const debug = require('debug')('talk:services:scraper'); const AssetModel = require('../models/asset'); const AssetsService = require('./assets'); const metascraper = require('metascraper'); -let taskInstance = null; - /** * Exposes a service object to allow operations to execute against the scraper. * @type {Object} @@ -17,15 +16,9 @@ const scraper = { * Create the new Task kue singleton. */ get task() { - if (taskInstance) { - return taskInstance; - } - - taskInstance = new kue.Task({ + return taskFactory({ name: 'scraper' }); - - return taskInstance; }, /**