【问题标题】:write polling service in node.js with sails.js framework使用sails.js框架在node.js中编写轮询服务
【发布时间】:2017-05-18 16:35:05
【问题描述】:

我在sails.js 中有项目,我想编写一个轮询服务,在某个时间间隔检查一些记录,然后发送电子邮件。我的示例代码是:

 module.exports.bootstrap = function(cb) {
    cb();
    var refresh = function() {
        setTimeout(doWork, //someInterval);
    };

    var doWork = function() {
        if (//check some condition) {
            sendEmail();
        }
        refresh();
    };

    doWork();
 }

我使用 pm2 库并以集群模式启动我的项目。示例代码是:

pm2 start app.js -i 4

此命令以集群模式运行 app.js,有 4 个进程。 问题是我的轮询服务在所有进程中运行,因为我在 config/bootstrap.js 文件中运行我的轮询服务,这非常糟糕。
我的问题是如何在所有过程中运行一次我的服务?

【问题讨论】:

  • 我认为不可能。
  • @MU 感谢您的回复。

标签: node.js sails.js pm2


【解决方案1】:

您可以检查进程是否为主进程,然后仅在该情况下运行脚本。

var cluster = require('cluster');
if(cluster.isMaster) // rest of your service...

但对我来说...这是一个奇怪的逻辑...您应该将您的任务排队到共享数据库,当任务被池化时,将其从中删除等等。

【讨论】:

  • 感谢您的回复.. 但是当您使用 pm2 运行时,所有进程都是 fork 而不是 master。这就是为什么这段代码是不可能的..
猜你喜欢
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2015-12-31
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
相关资源
最近更新 更多