使用异步在 Node.js 中批量处理并行 HTTP 请求

Processing parallel HTTP requests in batches in Node.js using async

我的代码结构大致如下:

readLine.on('line', function (line) {
    async.parallel([
    function (callback) {
        // HTTP request #1 sent with accompanied JSON, get JSON as result
    },
    function (callback) {
        // HTTP request #2 sent with accompanied JSON, get JSON as result
    }],
    function (error, results) {
        // write to local file
    })

我用 line-by-line 模块实现了输入流。 我的问题是,一旦我的代码开始 运行 30 秒左右,我就会收到 ECONNREFUSEDECONNRESET 错误,我认为这是因为我所有的 TCP 连接都超载了(所有HTTP 请求转到本地主机服务器)。我必须阅读的文本文件大约有 200,000 行,这绝对无济于事。

有什么方法可以批量处理线路和 HTTP 请求,并等待所有请求都通过并成功返回,这样我的 TCP 套接字就不会过载吗?
在此先感谢您的帮助和建议。

一个选项是使用 async.queue,它具有可配置的并发性。

var queue = async.queue(function(task, queueCallback) {
  async.parallel([
  function (callback) {
    // HTTP request #1 sent with accompanied JSON, get JSON as result
  },
  function (callback) {
      // HTTP request #2 sent with accompanied JSON, get JSON as result
  }],
  function (error, results) {
    // write to local file
    ...
    // call the queue callback
    queueCallback(error);
  })
}, 10); // 10 concurrent 'tasks' max

readLine.on('line', function (line) {
  queue.push({ line : line });
});