使用nodeJS应用程序中的“请求”中间件一次可以发出多少个请求

时间:2018-11-28 05:03:00

标签: javascript node.js request

我每5分钟运行一次cron作业以从第3方API获取数据,从NodeJS应用程序一次可以是N个请求。下面是详细信息和代码示例:

1>每5分钟运行一次cron作业:

const cron = require('node-cron');
const request = require('request');
const otherServices= require('./services/otherServices');
cron.schedule("0 */5 * * * *", function () {
  initiateScheduler();
});

2>获取要为其发起请求的元素的列表。可以接收N个元素。我在forEach循环中调用了请求函数(getSingleElementUpdate()

var initiateScheduler = function () {
  //Database call to get elements list
  otherServices.moduleName()
    .then((arrayList) => {
      arrayList.forEach(function (singleElement, index) {
        getSingleElementUpdate(singleElement, 1);
      }, this);
    })
    .catch((err) => {
      console.log(err);
    })
}

3>开始发起对singleElement的请求。请注意,如果我收到请求的成功(200)响应,则不需要任何回调。成功后,我只需要更新数据库条目即可。

var getSingleElementUpdate = function (singleElement, count) {
  var bodyReq = {
    "id": singleElement.elem_id
  }
  var options = {
    method: 'POST',
    url: 'http://example.url.com',
    body: bodyReq,
    dataType: 'json',
    json: true,
    crossDomain: true
  };
  request(options, function (error, response, body) {
    if (error) {
      if (count < 3) {
        count = count + 1;
        initiateScheduler(singleElement, count)
      }
    } else{
      //Request Success
      //In this: No callback required
      // Just need to update database entries on successful response
    }
  });
}

我已经检查过:

request-promise:但是,成功请求后,我不需要任何回调。因此,我没有发现在代码中实现此优势。让我知道您是否有任何积极的看法要补充。

在以下方面,我需要您的帮助:

在步骤2的arrayList中接收到10个元素时,我已经检查了性能。现在,问题是我对在步骤2中开始接收100和1000个元素时没有清晰的愿景。 ,我需要您的帮助来确定是否需要针对该场景更新代码,或者是否遗漏了任何会降低性能的内容。另外,一次可以提出的最大请求数是多少。您的任何帮助都是很重要的。

谢谢!

1 个答案:

答案 0 :(得分:1)

AFAIK对多个请求没有硬性限制。但是,至少要考虑两件事:您的硬件限制(内存/ CPU)和远程服务器延迟(它是否能够在下一批之前5分钟内响应所有请求)。如果不了解上下文,也无法预测您可能需要哪种缩放机制。

实际上,问题更多是与应用程序体系结构有关,而不是与某些特定的代码有关,因此您可能想尝试softwareengineering而不是SO。