|
@@ -188,32 +188,38 @@ export function renamePreUploadJsonFile(dir) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-export async function moveFile(src, dest, count = 1) {
|
|
|
- let result = true;
|
|
|
- await fs.promises.rename(src, dest).catch((error) => {
|
|
|
- logger.error(
|
|
|
- `loop-03-01 转存文件失败,rename:${count}:${
|
|
|
- error.message || "rename error"
|
|
|
- }`
|
|
|
- );
|
|
|
- result = false;
|
|
|
- });
|
|
|
- if (result) return;
|
|
|
+export async function moveFile(src, dest, maxRetries = 3) {
|
|
|
+ let success = false;
|
|
|
|
|
|
- if (count < 3) {
|
|
|
- count++;
|
|
|
- await moveFile(src, dest, count);
|
|
|
- } else {
|
|
|
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
|
try {
|
|
|
- await fs.promises.copyFile(src, dest);
|
|
|
- await fs.promises.unlink(src);
|
|
|
+ await fs.promises.rename(src, dest);
|
|
|
+ logger.info(`文件${src}已成功转存`);
|
|
|
+ success = true;
|
|
|
+ break;
|
|
|
} catch (error) {
|
|
|
logger.error(
|
|
|
- `loop-03-01 转存文件失败:copy:${error.message || "copy unlink error"}`
|
|
|
+ `loop-03-01 转存文件失败,rename尝试:${attempt},错误: ${
|
|
|
+ error.message || "rename error"
|
|
|
+ }`
|
|
|
);
|
|
|
- return Promise.reject(error);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (success) return;
|
|
|
+
|
|
|
+ try {
|
|
|
+ await fs.promises.copyFile(src, dest);
|
|
|
+ await fs.promises.unlink(src);
|
|
|
+ logger.info(`文件${src}已成功转存`);
|
|
|
+ } catch (error) {
|
|
|
+ logger.error(
|
|
|
+ `loop-03-01 转存文件失败:最终尝试copy,错误: ${
|
|
|
+ error.message || "copy unlink error"
|
|
|
+ }`
|
|
|
+ );
|
|
|
+ throw error;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -357,7 +363,7 @@ export async function batchSaveImages(imageList, courseCode) {
|
|
|
const outputDir = path.join(getOutputDir("origin"), courseCode);
|
|
|
if (!fs.existsSync(outputDir)) makeDirSync(outputDir);
|
|
|
|
|
|
- const { buildQueue } = usePQueue({ concurrency: 6 });
|
|
|
+ const { buildQueue } = usePQueue({ concurrency: 3 });
|
|
|
|
|
|
const images = imageList
|
|
|
.map((item, index) => {
|
|
@@ -379,12 +385,12 @@ export async function batchSaveImages(imageList, courseCode) {
|
|
|
const tasks = images.map((item) => {
|
|
|
return async () => {
|
|
|
const outputOriginPath = path.join(outputDir, path.basename(item.url));
|
|
|
- let result = true;
|
|
|
+ // let result = true;
|
|
|
await moveFile(item.url, outputOriginPath).catch((error) => {
|
|
|
console.error(`Error moving file: ${item.url}, ${error.message}`);
|
|
|
- result = false;
|
|
|
+ // result = false;
|
|
|
});
|
|
|
- if (!result) return;
|
|
|
+ // if (!result) return;
|
|
|
const urlKey = item.front ? "frontOriginImgPath" : "versoOriginImgPath";
|
|
|
imageList[item.index][urlKey] = outputOriginPath;
|
|
|
};
|
|
@@ -399,7 +405,7 @@ export async function moveInFileToStage(dir) {
|
|
|
const ddir = dir || getInputDir();
|
|
|
const stageDdir = getStageDir();
|
|
|
const files = fs.readdirSync(ddir);
|
|
|
- const { buildQueue } = usePQueue({ concurrency: 6 });
|
|
|
+ const { buildQueue } = usePQueue({ concurrency: 3 });
|
|
|
|
|
|
const tasks = files.map((fileName) => {
|
|
|
return async () => {
|