Я использую fast-csv для потоковой передачи строк csv из csv из s3, как показано ниже.здесь csvReader на самом деле является быстрым считывателем csv, который требуется следующим образом: const csvReader = require ('../ fast-csv / build / src');
let csvReadStream = s3.getObject(s3FileParam).createReadStream().pipe(csvReader.parse({
headers: true,
ignoreEmpty: true
}));
csvReadStream.on('error', function (err) {
console.error('Caught and error while streaming the file: ' + inputParams.s3FileLoc, err);
setTimeout(function () {
process.exit(1);
}, 15000);
});
csvReadStream.on('end', function () {
console.log('Finished streaming the file: ' + inputParams.s3FileLoc);
});
csvReadStream.on('data', function (csvRow) {
queue.push(csvRow);
});
очередь здесь - асинхронная очередь, к которой мынажимая каждую строку, обрабатывая максимум 1 строку в любое время.
Однако после обработки некоторых строк событие 'end' запускается без каких-либо ошибок в другом месте приложения, и поток, таким образом, заканчивается.Любые указатели / идеи будут чрезвычайно полезны