Agenda.js 阻止 app.js 工作
Agenda.js preventing app.js working
我正在尝试将 Agenda 添加到我的节点应用程序中,这样我就可以 运行 每天执行一些后台任务,例如停用 60 天未登录的用户。
我尝试按照与模块关联的 GitHub 上的示例进行操作,但似乎 运行 遇到问题,每当我尝试加载网站时我的应用程序都会挂起,并且最终得到 "Error 504: Gateway Server Timeout"。我还在控制台中看到 undefined
。
我知道 Agenda 已经启动并且工作正常,因为我目前的工作很简单,每分钟只做一个 console.log。
在我的 app.js 中,我需要我的 worker.js 文件:
var agenda = require('./worker.js');
我的worker.js只是简单的1行:
require('./lib/agenda.js');
agenda.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();
});
我觉得我错过了一些非常明显的东西!
原来我需要在 agenda.js 的启动命令部分添加一个 agenda.processEvery
:
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
我正在尝试将 Agenda 添加到我的节点应用程序中,这样我就可以 运行 每天执行一些后台任务,例如停用 60 天未登录的用户。
我尝试按照与模块关联的 GitHub 上的示例进行操作,但似乎 运行 遇到问题,每当我尝试加载网站时我的应用程序都会挂起,并且最终得到 "Error 504: Gateway Server Timeout"。我还在控制台中看到 undefined
。
我知道 Agenda 已经启动并且工作正常,因为我目前的工作很简单,每分钟只做一个 console.log。
在我的 app.js 中,我需要我的 worker.js 文件:
var agenda = require('./worker.js');
我的worker.js只是简单的1行:
require('./lib/agenda.js');
agenda.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();
});
我觉得我错过了一些非常明显的东西!
原来我需要在 agenda.js 的启动命令部分添加一个 agenda.processEvery
:
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