refactor(uploader): 优化文件上传并发处理逻辑
构建上传工具 / build (push) Successful in 1m20s

- 将循环方式从索引遍历改为range方式
- 添加处理进程创建注释说明
- 在进度更新后添加延时避免过度频繁更新
- 修复空行处理时计数器递增逻辑
- 优化panic恢复处理流程
This commit is contained in:
2026-07-28 09:17:50 +08:00
parent c7755b7c29
commit 59cec93734
+5 -1
View File
@@ -334,7 +334,7 @@ func processFile(ctx context.Context, logChan *chan string, filePath string, fil
lines := make(chan string, 200)
var countLine int32 = 0
// 创建指定个worker同时处理文件上传
for i := 0; i < config.APPConfig.ThreadCount; i++ {
for i := range config.APPConfig.ThreadCount {
select {
case <-ctx.Done():
close(lines)
@@ -342,6 +342,7 @@ func processFile(ctx context.Context, logChan *chan string, filePath string, fil
default:
}
//创建处理进程
go func() {
processLines(ctx, logChan, &lines, i, filePath, &countLine)
}()
@@ -356,6 +357,7 @@ func processFile(ctx context.Context, logChan *chan string, filePath string, fil
fmt.Println("panic:", f+":"+strconv.Itoa(l), r)
}
}()
for scanner.Scan() {
select {
case <-ctx.Done():
@@ -384,6 +386,7 @@ func processFile(ctx context.Context, logChan *chan string, filePath string, fil
Percentage: int(float64(countLine) / float64(fileLines) * 100),
},
)
time.Sleep(50 * time.Millisecond)
}
//上传完成,进度设为100
progress.Store(filepath.Base(filePath),
@@ -415,6 +418,7 @@ func processLines(ctx context.Context, logChan *chan string, lines *chan string,
// 跳过空行
if strings.TrimSpace(line) == "" {
atomic.AddInt32(countLine, 1)
continue
}
// 上传数据