审查这个生成的批量导出实现。
处理用户提交的导出任务,把文件限制在 /srv/exports 下,最多并发执行四项任务,关闭每个文件,等待全部任务完成,并以普通错误报告 I/O 失败而不让进程崩溃。
Go
func processAll(jobs []Job) (err error) {
defer func() {
if value := recover(); value != nil {
err = fmt.Errorf("batch failed: %v", value)
}
}()
for _, job := range jobs {
go func() {
path := filepath.Join("/srv/exports", job.Path)
handle, err := os.Create(path)
if err != nil {
panic(err)
}
defer handle.Close()
if _, err := handle.Write(job.Data); err != nil {
panic(err)
}
}()
}
return nil
}
生成代码仅作示例,不代表任何特定模型