Node.js - Sync vs Async FS lors de l'utilisation dans Docker (architecture de microservice)
J'ai un microservice (dans docker swarm) que tout ce qu'il faut faire est de nettoyer les fichiers d'un dossier et c'est tout
est-il bon dans ce cas d'utiliser une fonction de synchronisation? J'aimerais.
1- trouver la taille du dossier
2- exécuter tous les fichiers et supprimer
et il y a un cron qui exécute le flux toutes les minutes alors pourquoi dois-je utiliser async? et ne pas synchroniser
y a-t-il un problème dans ce code? est-ce bien que je m'enveloppe avec une promesse ou parce qu'elle se synchronise pour ne pas avoir besoin d'une promesse?
par exemple :
function getTotal(){
let totalSize = 0;
files.map(file => {
totalSize += fs.statSync(file.path).size;
});
return totalSize;
}
pour obtenir tous les fichiers:
fs.readdirSync(dirPath).map(file => {
const fileOrDir = fs.statSync(
[dirPath, file].join('/')
})
);
retirer :
const unlink = util.promisify(
fs.unlink
);
await unlink(filePath);
tout le flux:
files = await service.getFiles(folderPath);
service.getTotal();
for(files){
await this.removeFile(file);
}
il y a un cron qui exécute le flux toutes les minutes, alors pourquoi dois-je utiliser async?
Si ce processus ne fait rien d'autre qui nécessite de la réactivité sauf le nettoyage de ces fichiers (aucun serveur n'écoutant les connexions entrantes), alors les sync
E / S sont très bien. Vous pouvez simplement utiliser unlinkSync()
.
Pour info, si vous aviez besoin d'utiliser des E / S non bloquantes, il n'est plus nécessaire de promettre manuellement fs
les fonctions du module dans node.js (même si vous vouliez utiliser des API non bloquantes) car l' fs.promises
interface contient des versions promises de la plupart des fonctions.