Agenda.js мешает работе app.js - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь добавить Повестку дня в свое приложение узла, чтобы я мог запускать некоторые фоновые задачи ежедневно, например, Деактивировать пользователей, которые не вошли в систему в течение 60 дней.

Я пробовал следоватьпример на GitHub, связанный с модулем, но, кажется, сталкивается с проблемой зависания моего приложения, когда я пытаюсь загрузить сайт, и в итоге получаю «Ошибка 504: время ожидания сервера шлюза».Я также вижу undefined в консоли.

Я знаю, что Повестка дня работает и работает правильно, так как в данный момент у меня есть простая работа, которая просто делает console.log каждую минуту.

В моем app.js мне требуется мой файл worker.js:

var agenda = require('./worker.js');

Мой worker.js - это просто 1 строка:

require('./lib/agenda.js');

повестки дня. Js:

var Agenda = require('agenda');

var connectionString = "mongodb://" + process.env.MONGODB_USER + ":" +
  process.env.MONGODB_PASSWORD + "@" +
  process.env.DATABASE_SERVICE_NAME + ':' +
  process.env.MONGODB_PORT + '/' +
  process.env.MONGODB_DATABASE;

 var agenda = new Agenda({db: {address: connectionString}});

 var jobTypes = process.env.JOB_TYPES ? process.env.JOB_TYPES.split(',') : [];

 jobTypes.forEach(function(type){
    require('./jobs/' + type)(agenda);
 });

 if (jobTypes.length) {
    agenda.on('ready', function() {
        agenda.every('* * * * *', 'test job')   //Run job at 0030 every day

        agenda.start();
    })
 }

 module.exports = agenda

и тестовое задание определено в файле задания следующим образом:

agenda.define('test job', function(job, done) {
    console.log ('Agenda job executed');
    done();
});

Я чувствую, что упускаю что-то действительно очевидное!

1 Ответ

0 голосов
/ 11 мая 2018

Оказывается, мне нужно было добавить agenda.processEvery в разделе команды запуска моей повестки дня. Js:

var Agenda = require('agenda');

var connectionString = "mongodb://" + process.env.MONGODB_USER + ":" +
  process.env.MONGODB_PASSWORD + "@" +
  process.env.DATABASE_SERVICE_NAME + ':' +
  process.env.MONGODB_PORT + '/' +
  process.env.MONGODB_DATABASE;

 var agenda = new Agenda({db: {address: connectionString}});

 var jobTypes = process.env.JOB_TYPES ? process.env.JOB_TYPES.split(',') : [];

 jobTypes.forEach(function(type){
    require('./jobs/' + type)(agenda);
 });

 if (jobTypes.length) {
    agenda.on('ready', function() {
        agenda.every('* * * * *', 'test job')   //Run job at 0030 every day

        agenda.processEvery('one minute');    //<====== This is the new line

        agenda.start();
    })
 }

 module.exports = agenda
...