You've already forked VptPassiveAdapter
telemetry
This commit is contained in:
32
core/task.go
32
core/task.go
@ -5,37 +5,63 @@ import (
|
||||
"ZhenTuLocalPassiveAdapter/dto"
|
||||
"ZhenTuLocalPassiveAdapter/fs"
|
||||
"ZhenTuLocalPassiveAdapter/util"
|
||||
"context"
|
||||
"fmt"
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
)
|
||||
|
||||
func HandleTask(device config.DeviceMapping, task dto.Task) (*dto.FileObject, error) {
|
||||
var tracer = otel.Tracer("task")
|
||||
|
||||
func HandleTask(ctx context.Context, device config.DeviceMapping, task dto.Task) (*dto.FileObject, error) {
|
||||
_, span := tracer.Start(ctx, "startTask")
|
||||
adapter := fs.GetAdapter()
|
||||
span.SetAttributes()
|
||||
fileList, err := adapter.GetFileList(
|
||||
ctx,
|
||||
path.Join(device.Name, task.StartTime.Format("2006"+config.Config.FileName.DateSeparator+"01"+config.Config.FileName.DateSeparator+"02")),
|
||||
task.StartTime,
|
||||
)
|
||||
if err != nil {
|
||||
span.SetAttributes(attribute.String("error", err.Error()))
|
||||
span.SetStatus(codes.Error, "获取文件列表失败")
|
||||
log.Printf("获取文件列表失败, DeviceNo: %s, 错误: %v\n", device.DeviceNo, err)
|
||||
return nil, err
|
||||
}
|
||||
files := util.FilterAndSortFiles(fileList, task.StartTime, task.EndTime)
|
||||
if len(files) == 0 {
|
||||
span.SetStatus(codes.Error, "没有找到文件")
|
||||
return nil, fmt.Errorf("没有找到文件")
|
||||
}
|
||||
constructTask, err := util.CheckFileCoverageAndConstructTask(files, task.StartTime, task.EndTime, task)
|
||||
span.SetAttributes(attribute.Int("fileCount", len(files)))
|
||||
constructTask, err := util.CheckFileCoverageAndConstructTask(ctx, files, task.StartTime, task.EndTime, task)
|
||||
if err != nil {
|
||||
span.SetAttributes(attribute.String("error", err.Error()))
|
||||
span.SetStatus(codes.Error, "文件片段检查失败")
|
||||
log.Printf("文件片段检查失败, DeviceNo: %s, 错误: %v\n", device.DeviceNo, err)
|
||||
return nil, err
|
||||
}
|
||||
ok := util.RunFfmpegTask(constructTask)
|
||||
ok := util.RunFfmpegTask(ctx, constructTask)
|
||||
if !ok {
|
||||
span.SetAttributes(attribute.String("error", "ffmpeg任务执行失败"))
|
||||
span.SetStatus(codes.Error, "ffmpeg任务执行失败")
|
||||
return nil, fmt.Errorf("ffmpeg任务执行失败")
|
||||
}
|
||||
outfile, err := os.Stat(constructTask.OutputFile)
|
||||
if err != nil {
|
||||
span.SetAttributes(attribute.String("error", err.Error()))
|
||||
span.SetStatus(codes.Error, "文件不存在")
|
||||
return nil, fmt.Errorf("文件不存在:%s", constructTask.OutputFile)
|
||||
}
|
||||
span.SetAttributes(attribute.String("file.name", outfile.Name()))
|
||||
span.SetAttributes(attribute.Int64("file.size", outfile.Size()))
|
||||
if outfile.Size() < 4096 {
|
||||
span.SetAttributes(attribute.String("error", "文件大小过小"))
|
||||
span.SetStatus(codes.Error, "文件大小过小")
|
||||
return nil, fmt.Errorf("文件大小过小:%s", constructTask.OutputFile)
|
||||
}
|
||||
return &dto.FileObject{
|
||||
|
Reference in New Issue
Block a user