Node.js-在docker中使用时的同步vs异步fs(微服务架构)

问题描述 投票:1回答:1

我有一个微服务(在docker swarm中),所有需要做的就是从1个文件夹中清除文件,仅此而已

在那种情况下使用同步功能好吗?我想要。

1-查找文件夹大小

2-运行所有文件并删除

并且有一个cron每分钟运行一次那么为什么我需要使用异步?并且不同步

这段代码有什么问题吗?我用promise包裹还是因为它同步所以不需要promise是很好吗?

例如:

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);
}
node.js fs
1个回答
1
投票

有一个cron每分钟运行一次流程,所以为什么我需要使用async?

如果此过程除了清除这些文件之外没有执行任何其他需要响应的操作(没有服务器监听传入的连接),则sync I / O很好。您可以只使用unlinkSync()

FYI,如果您确实需要使用非阻塞I / O,则无需再手动在node.js中实现fs模块功能的扩展(即使您确实想使用非阻塞API),因为[ C0]界面包含大多数功能的承诺版本。

© www.soinside.com 2019 - 2024. All rights reserved.