保持Node Cron作业数组在内存中运行的最佳方法

时间:2017-11-26 00:34:21

标签: arrays cron

我需要在内存中保留一系列cron作业,这些作业根据配置细节运行。目前,我正在通过将配置数据作为来自数据存储的记录来初始化cron作业数组a。然后我遍历记录,根据每条记录中的信息创建一个cron作业。创建cron作业后,它将以脚本级别数组的形式存储在内存中。

这是完成工作的代码。

const arrCronJobs = [];

function populateEnvVarCronJobs() {
  console.log('populating crons');
  return dataHelper.getCronJobs()
    .then((results) => {
        // Task entities found.
        const jobs = results[0];
        jobs.forEach((job) => {
            const rtn = configCron(job);
            if (rtn) {
                console.log(`adding job: ${rtn}`);
                arrCronJobs.push(rtn);
            }
        });
        return arrCronJobs;
      })
      .catch(e => {
        console.log(e);
      });}

//initialize the array of Cron jobs

populateEnvVarCronJobs()
.then(result => {
    console.log(result);
});

我保持整个内存运行内存的方式是创建一个只能继续收听的HTTP服务器。

const server = http.createServer( function(req, res) {
/* Listener handler behavior...... */});

server.listen(port);

我的问题是:使用HTTP服务器是保持Cron作业数组在内存中活动的最佳方法吗?或者是否存在一些固有的风险,我没有看到这种风险要求我采取另一种方法会更好?

提前致谢。我期待着阅读深思熟虑的回应。

1 个答案:

答案 0 :(得分:0)

唯一真正的问题是您是否在端口(并使用该端口)暴露您的节点应用程序是没有正当理由的。为了安全起见,永远不要随意收听端口,它会让你开启漏洞利用。

使用像forever这样的包更合适,您也可以使用包ontime以类似方式安排作业。

希望这有帮助!