首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Agenda.js防止app.js工作

Agenda.js防止app.js工作
EN

Stack Overflow用户
提问于 2018-05-10 13:37:26
回答 1查看 100关注 0票数 0

我正在尝试将日程添加到我的节点应用程序中,这样我就可以每天运行一些后台任务,例如关闭那些60天没有登录的用户。

我试着在与模块相关的GitHub上学习这个示例,但是每当我尝试加载站点时,我的应用程序似乎都遇到了问题,最终得到了一个“错误504:网关服务器超时”。我还在控制台上看到了undefined

我知道日程安排是正确的,因为我现在有一份简单的工作,每分钟只做一次console.log。

在我的app.js中我需要我的worker.js文件:

代码语言:javascript
复制
var agenda = require('./worker.js');

我的worker.js只是一个简单的1行:

代码语言:javascript
复制
require('./lib/agenda.js');

agenda.js:

代码语言:javascript
复制
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

测试作业定义在一个作业文件中,如下所示:

代码语言:javascript
复制
agenda.define('test job', function(job, done) {
    console.log ('Agenda job executed');
    done();
});

我觉得我错过了一些很明显的东西!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-11 13:03:56

结果,我需要在我的agenda.processEvery的start命令部分中添加一个agenda.js:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50274246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档