diff --git a/worker/internal/services/errors.go b/worker/internal/services/errors.go new file mode 100644 index 0000000..4846905 --- /dev/null +++ b/worker/internal/services/errors.go @@ -0,0 +1,7 @@ +package services + +import "errors" + +var ( + ErrFileNotFound = errors.New("FileNotFound") +) diff --git a/worker/internal/services/file.go b/worker/internal/services/file.go index 1e63a45..9fa01bf 100644 --- a/worker/internal/services/file.go +++ b/worker/internal/services/file.go @@ -1,7 +1,6 @@ package services import ( - "errors" "os" "path/filepath" "pkg/models" @@ -20,7 +19,7 @@ type GenStandardFileReturn struct { // 生成标准格式的file func GenStandardFile(filePath string, mimeType string) (GenStandardFileReturn, error) { if _, err := os.Stat(filePath); os.IsNotExist(err) { - return GenStandardFileReturn{}, errors.New("文件不存在") + return GenStandardFileReturn{}, ErrFileNotFound } file, err := os.Open(filePath) if err != nil { diff --git a/worker/internal/tasks/image.go b/worker/internal/tasks/image.go index 19c56d7..75205ed 100644 --- a/worker/internal/tasks/image.go +++ b/worker/internal/tasks/image.go @@ -3,6 +3,8 @@ package tasks import ( "context" "encoding/json" + "errors" + "fmt" "mime" "path/filepath" "pkg/models" @@ -28,6 +30,9 @@ func CompressImage(ctx context.Context, task *asynq.Task) error { originalPath := filepath.Join(uploadPath, payload.FileId) compressedPath, err := services.CompressImage(originalPath, originalFileInfo.MimeType) if err != nil { + if errors.Is(err, services.ErrUnsupportedMimeType) { + return fmt.Errorf("%w: %w", err, asynq.SkipRetry) + } return err } compressedFileInfo, err := services.GenStandardFile(compressedPath, originalFileInfo.MimeType) @@ -70,6 +75,9 @@ func ConvertImage(ctx context.Context, task *asynq.Task) error { originalPath := filepath.Join(uploadPath, payload.FileId) convertedPath, err := services.ConvertImageWithMagick(originalPath, originalFileInfo.MimeType, payload.TargetExt) if err != nil { + if errors.Is(err, services.ErrUnsupportedMimeType) { + return fmt.Errorf("%w: %w", err, asynq.SkipRetry) + } return err } mimeType := mime.TypeByExtension(payload.TargetExt)