Sails.js 在sails js中对特定操作运行后台作业

Sails.js 在sails js中对特定操作运行后台作业,sails.js,kue,sails-redis,Sails.js,Kue,Sails Redis,我正在尝试创建一个在特定事件发生时在后台运行的服务。例如,当用户验证电子邮件时,我希望我的服务能够从数据库中删除可能未经验证的重复电子邮件。我试着用它来拯救我的目的,但我认为这更像是一旦帆升起,服务就会运行 那么,当特定事件发生时,如何运行服务呢?任何帮助都将不胜感激 谢谢,也许我能帮你。例如,我们使用它们来更新统计数据,例如,在用户更新调用后,每种类型的用户数保持不变 此外,我们还使用创建作业,以便在将来的某个特定时间执行一次,或者像cron作业一样执行。可能您希望收集要清除的无效/过期电子邮

我正在尝试创建一个在特定事件发生时在后台运行的服务。例如,当用户验证电子邮件时,我希望我的服务能够从数据库中删除可能未经验证的重复电子邮件。我试着用它来拯救我的目的,但我认为这更像是一旦帆升起,服务就会运行

那么,当特定事件发生时,如何运行服务呢?任何帮助都将不胜感激

谢谢,也许我能帮你。例如,我们使用它们来更新统计数据,例如,在用户更新调用后,每种类型的用户数保持不变

此外,我们还使用创建作业,以便在将来的某个特定时间执行一次,或者像cron作业一样执行。可能您希望收集要清除的无效/过期电子邮件地址验证条目,并每小时一次将其删除。

可能会对您有所帮助。例如,我们使用它们来更新统计数据,例如,在用户更新调用后,每种类型的用户数保持不变


此外,我们还使用创建作业,以便在将来的某个特定时间执行一次,或者像cron作业一样执行。您可能希望收集要清除的无效/过期电子邮件地址验证条目,并每小时一次将其删除。

您确实可以使用
Kue
来实现此目的

  • kue

    var kue = require('kue');
    var kue_engine = kue.createQueue({
      prefix: 'kue',
      redis: {
        port: '6379',
        host: 'localhost'
      }
    });
    
    
    process.once('SIGTERM', function (sig) {
      kue_engine.shutdown( 5000, function(err) {
        console.log( 'Kue shutdown: ', err||'' );
        process.exit( 0 );
      });
    });
    
    module.exports.kue = kue_engine;
    
  • 将作业添加到相关控制器操作中的
    Kue

    var kue_engine = sails.config.kue;
    kue_engine.create('delete_verified_email', {email: '123@456.com'})
      .priority('medium')
      .attempts(3)
      .save();
    
  • 在项目根目录中创建一个
    worker.js
    ,以使用
    kue
    作业

    var kue = require('kue');
    require('sails').load({
        hooks: {
            blueprints: false,
            cors: false,
            csrf: false,
            grunt: false,
            http: false,
            i18n: false,
            logger: false,
            policies: false,
            pubsub: false,
            request: false,
            responses: false,
            session: false,
            sockets: false,
            views: false
          }
        }, function (err, app) {
              sails.log.info('Starting kue');
              var kue_engine = sails.config.kue;
    
              //register kue.
    
              kue_engine.on('job complete', function (id) {
                  sails.log.info('Removing completed job: ' + id);
                  kue.Job.get(id, function (err, job) {
                      job.remove();
                  });
              });
              kue_engine.process('delete_verified_email', 20, function (job, done) {
                  // you can access the data passed while creating job at job.data
                  // all the sails models, services are available here
                  console.log(job.data.email)
                  done && done();
              });
    
  • 运行
    worker.js
    以使用您的sails应用程序创建的kue作业


  • 为此,您确实可以使用
    Kue

  • kue

    var kue = require('kue');
    var kue_engine = kue.createQueue({
      prefix: 'kue',
      redis: {
        port: '6379',
        host: 'localhost'
      }
    });
    
    
    process.once('SIGTERM', function (sig) {
      kue_engine.shutdown( 5000, function(err) {
        console.log( 'Kue shutdown: ', err||'' );
        process.exit( 0 );
      });
    });
    
    module.exports.kue = kue_engine;
    
  • 将作业添加到相关控制器操作中的
    Kue

    var kue_engine = sails.config.kue;
    kue_engine.create('delete_verified_email', {email: '123@456.com'})
      .priority('medium')
      .attempts(3)
      .save();
    
  • 在项目根目录中创建一个
    worker.js
    ,以使用
    kue
    作业

    var kue = require('kue');
    require('sails').load({
        hooks: {
            blueprints: false,
            cors: false,
            csrf: false,
            grunt: false,
            http: false,
            i18n: false,
            logger: false,
            policies: false,
            pubsub: false,
            request: false,
            responses: false,
            session: false,
            sockets: false,
            views: false
          }
        }, function (err, app) {
              sails.log.info('Starting kue');
              var kue_engine = sails.config.kue;
    
              //register kue.
    
              kue_engine.on('job complete', function (id) {
                  sails.log.info('Removing completed job: ' + id);
                  kue.Job.get(id, function (err, job) {
                      job.remove();
                  });
              });
              kue_engine.process('delete_verified_email', 20, function (job, done) {
                  // you can access the data passed while creating job at job.data
                  // all the sails models, services are available here
                  console.log(job.data.email)
                  done && done();
              });
    
  • 运行
    worker.js
    以使用您的sails应用程序创建的kue作业