Node.js拨回API请求

时间:2016-01-22 08:21:33

标签: node.js api rate-limiting

我有125,000个身份证号码列表。

我正在向api发出请求以获取每个api的更多信息。

但我的问题是,如果我每秒请求超过6秒,api将停止给我回复。

我需要一种方法来控制请求的速度。

2 个答案:

答案 0 :(得分:1)

只需使用setInterval调用的函数来进行实际的API查询吗?

简单示例:

var ids = [ /* big array here */ ];

function queryAllIds(ids, callback) {
  var processedIds = [];
  var lastProcessedId = 0;
  var processedIdCount = 0;
  var intervalId;

  function queryApi() {
    var idToProcess = lastProcessedId++;
    doActualQuery(ids[idToProcess], function(result) {
      processedIds[idToProcess] = result;
      processedIdCount++;

      if (processedIdCount === ids.length) {
        nextTick(callback, processedIds);
      }
    });
  }

  if (intervalId && lastProcessedId === ids.length)
    clearInterval(intervalId);
  }

  intervalId = setInterval(queryApi, 1000/6);      
}

queryAllIds(ids, function (processedIds) { 
  // Do stuff here
});

答案 1 :(得分:0)

我们最终使用了速率限制器,它提供了开箱即用的速率限制。 https://www.npmjs.com/package/limiter