Node.js - syn c против asyn c fs при использовании в docker (архитектура микросервиса) - PullRequest
1 голос
/ 27 апреля 2020

У меня есть микросервис (в docker рое), который все, что нужно сделать, это очистить файлы из 1 папки, и это все

. В таком случае хорошо ли использовать функцию syn c? Я бы хотел.

1 - найдите размер папки

2 - запустите все файлы и удалите

, и есть cron, который запускает поток каждую минуту, поэтому зачем мне использовать ASYN c? а не син c

есть ли проблемы в этом коде? хорошо ли, что я завернул с обещанием или потому что он синхронизирован c, поэтому мне не нужно обещание?

например:

function getTotal(){   
  let totalSize = 0;

      files.map(file => {
        totalSize += fs.statSync(file.path).size;
      });

      return totalSize;
}

для получения всех файлов:

   fs.readdirSync(dirPath).map(file => {
          const fileOrDir = fs.statSync(
            [dirPath, file].join('/')
            })
   );

удалить:

  const unlink = util.promisify(
    fs.unlink
  );
  await unlink(filePath);

весь поток:

files = await service.getFiles(folderPath);
service.getTotal();
for(files){
   await this.removeFile(file);
}

1 Ответ

1 голос
/ 27 апреля 2020

есть cron, который запускает поток каждую минуту, так почему я должен использовать asyn c?

Если этот процесс не выполняет ничего, что требует отзывчивости, кроме очистки эти файлы (сервер не прослушивает входящие соединения), тогда sync I / O просто в порядке. Вы можете просто использовать unlinkSync().

FYI, если вам нужно было использовать неблокирующий ввод / вывод, вам больше не нужно вручную обещать fs функции модуля в node.js (даже если вы Я действительно хотел использовать неблокирующие API), потому что интерфейс fs.promises содержит многообещающие версии большинства функций.

...