我有一个脚本,它是一个更大的电子程序的一部分。该脚本是一个循环,它从应用程序的临时目录中读取文件,然后将所有文件上传到 S3。这对于小型文件集效果很好,但对于较大的文件集,它会导致计算机冻结并重新启动并导致系统崩溃(Macbook pro 2018)。我测试过的一个大集合包含大约 600 个文件(每个文件都很小,低于 1 mb)。
我无法从脚本本身得到任何错误,因此调试起来有点困难。我猜这必须与很多fs.lstatSync
或对许多人put
一下子全部活跃起来。
我想要一些有关如何调试此问题的建议(很难,因为计算机冻结了)或有关打开多少个的建议fs.lstatSync
and put
这是稳定的。
const upload = (): void => {
const fileUploadPromises = [];
const userDataPath = remote.app.getPath('temp');
let i = 0;
let bytes = 0;
let totalBytes = 0;
let lastUpdate = 0;
for (const file of filenames) {
const filePath = `${userDataPath}chunks/${file}.ts`;
const stats = fs.lstatSync(filePath);
const { size } = stats;
const createdFile = createFileData.createFile[i];
totalBytes = totalBytes + size;
fileUploadPromises.push(
put({
url: createdFile.presignedPutUrl,
body: fs
.createReadStream(filePath)
.on('data', c => {
bytes += c.length;
const stepSize = totalBytes / 100;
if (bytes - lastUpdate > stepSize) {
setProgress(bytes / totalBytes);
lastUpdate = bytes;
}
})
.on('error', e => {
console.error(e); // eslint-disable-line
}),
headers: {
'Content-length': size,
}
}).catch(e => {
console.error(e); // eslint-disable-line
})
);
i = i + 1;
}
};
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)