Я пытаюсь использовать библиотеку ssh2-sftp для чтения/записи файла в узле. Когда я делаю sftp.get в более крупном CSV-файле (но не слишком большом - например, только 2 МБ) на сайте sftp, а затем читаю данные о возвращенном потоке, звонок висит на мне после 14-го потока. («данные»). Я тестировал это с помощью нескольких разных файлов примеров, и код отлично работает на небольших файлах. Но если файл CSV достаточно велик, чтобы пройти этот 14-й звонок, он просто зависает, и это похоже на то, что он больше не читает, хотя есть еще что читать. И stream.on («close») никогда не включается.Чтение больших файлов sftp с ssh2 sftp Узел
Очевидно, что это довольно странное поведение. Надеюсь, что кто-то столкнулся с чем-то подобным, используя эту библиотеку, и имел некоторые рекомендации.
Если это помогает вообще, вот некоторый код
sftp.get(currentFileName).then((readStream) => {
var counter = 0;
readStream.on("data", function(d) {
counter++;
console.log("counter = " + counter);
});
readStream.on("close", function(err) {
if (err) {
console.error("Problem with read stream for file " + currentFileName + ", error = ", err);
}
//done reading the individual file, all went well
else {
console.log("done reading the stream");
}
});
readStream.on('error', function(e){
console.error("Error retrieving file: " + e);
})
readStream.resume();
И после того, как 14-го вызова в readStream.on («данные»), он просто замерзает. Возможно, половина файла прочитана.