Как сократить время загрузки при загрузке нескольких файлов - PullRequest
0 голосов
/ 13 июня 2019

У меня есть каталог с небольшими файлами в минимальных диапазонах от 2000 до 10000 файлов.

В настоящее время нет способов напрямую загрузить папку на s3 в aws-sdk-js.

мне нужно рекурсивно перебрать файлы внутри папки и загрузить их в s3.

Я использовал эти строки кода.

const PARALLEL_UPLOADS = 10;
const q = async.queue((task, callback) => {
  s3.upload({
  Bucket: 'xxx',
  Key: task.name,
  Body: fs.createReadStream(task.path)
 }, callback)
}, PARALLEL_UPLOADS);

q.drain = function() {
  console.log('all items have been processed');
};

Я использовал пакет walk npm для рекурсивного чтения файлов внутри папки. внутри я помещаю файлы в очередь.

  let walker = walk.walk(path);
  walker.on("file", async function(root, stat, next) {
  q.push({
     name: stat.name,
     path: root + "/" + stat.name,
 }) })

Я тестировал папку размером 108 МБ, но в ней было 2700 файлов во вложенной папке.

загрузка занимает более 45 минут.

так как сократить время загрузки ??? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...