3

我有一个独立的调度服务设置为每 1 小时执行一次逻辑,我想在启动forever后立即启动此服务,sails但我不确定最好的方法是什么。

// services/Scheduler.js
sails.load(function() {
  setInterval( logicFn , config.schedulingInterval);
});

Sails 可以在 config.bootstrap 模块中执行引导逻辑,我将使用 forever-monitor 节点模块 \

var forever = require('forever-monitor'),
    scheduler = new (forever.Monitor)( schedulerPath, {
      max: 20,
      silent: true,
      args: []
    });

module.exports.bootstrap = function(cb) {
  scheduler.start();
  cb();
};

如果服务因任何原因失败并重新启动,它会再次访问所有水线模型怎么办,如何确保它每次都按预期工作?

4

2 回答 2

1

请请,请始终分享您的sails.js 版本号!这对于搜索问题/答案的人来说非常重要!

有很多方法可以做到这一点。然而,对于那些想要“sails.js”方式的人来说,有新的sails.js 版本的钩子。

请参阅 github 中的此问题线程,特别是在问题关闭后,一些用户提供了一些非常有用的解决方案。最新消息由“scott-wyatt”分享,2014 年 12 月 28 日评论:

https://github.com/balderdashy/sails/issues/2092

于 2015-06-12T14:25:50.050 回答
1

正如brittonjb 在评论中所说,一个简单的解决方案是使用cron 模块进行调度。您可以指定一个函数,让它在您希望的任何时间间隔调用;该函数可以在 /config/bootstrap.js 中定义,也可以在其他地方定义(例如 mail.dailyReminders() 如果您有一个带有 dailyReminders 方法的邮件服务);

于 2015-07-20T09:02:55.037 回答