Node.js node-csv-parser死锁,因为背压不起作用

时间:2013-01-13 02:14:22

标签: node.js csv deadlock backpressure

我正在尝试从CSV文件中读取网址,检查它们是否可用,并将错误的网址写入另一个文件。我经历了大约几千,然后急剧减速(从每秒10次检查到每10秒检查一次),然后得到“致命错误:CALL_AND_RETRY_2分配失败 - 处理内存不足”,大概是因为我没有申请背压正确地发射到发射流。

var csv = require('csv');
var request = require('request');
var fs = require('fs');

csv()
.from(fs.createReadStream('./urls.csv'), {columns: true})
.to(fs.createWriteStream('./badurls.csv'))
.transform(function(data, index, callback){
  checkImage(null,callback,data['main-image-url'],index)
});

function checkImage(err, callback, url, index) {
  if (url != "") {
    request.head(url, function(err, res) {
      console.log(index,res.statusCode,url);
      if (res.statusCode != 200) {
        callback(null,url+"\n");
      }
    })
  }
}

0 个答案:

没有答案