fix: stabilize media queue processing

This commit is contained in:
2026-01-22 17:44:55 +08:00
parent 38d8706038
commit bc8ed1cbbd
2 changed files with 23 additions and 14 deletions

View File

@@ -13,7 +13,9 @@ import (
"quyun/v2/database" "quyun/v2/database"
"quyun/v2/providers/app" "quyun/v2/providers/app"
"quyun/v2/providers/job" "quyun/v2/providers/job"
"quyun/v2/providers/jwt"
"quyun/v2/providers/postgres" "quyun/v2/providers/postgres"
"quyun/v2/providers/storage"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@@ -24,6 +26,8 @@ func defaultProviders() container.Providers {
return commands.Default(container.Providers{ return commands.Default(container.Providers{
postgres.DefaultProvider(), postgres.DefaultProvider(),
job.DefaultProvider(), job.DefaultProvider(),
jwt.DefaultProvider(),
storage.DefaultProvider(),
database.DefaultProvider(), database.DefaultProvider(),
}...) }...)
} }

View File

@@ -53,13 +53,14 @@ func (j *MediaProcessWorker) Work(ctx context.Context, job *river.Job[args.Media
} }
// 2. 更新状态为处理中,标识处理已开始。 // 2. 更新状态为处理中,标识处理已开始。
_, err = models.MediaAssetQuery.WithContext(ctx). if err := models.MediaAssetQuery.WithContext(ctx).
Where(models.MediaAssetQuery.ID.Eq(asset.ID)). UnderlyingDB().
UpdateSimple( Model(&models.MediaAsset{}).
models.MediaAssetQuery.Status.Value(consts.MediaAssetStatusProcessing), Where("id = ?", asset.ID).
models.MediaAssetQuery.UpdatedAt.Value(time.Now()), Updates(map[string]any{
) "status": consts.MediaAssetStatusProcessing,
if err != nil { "updated_at": time.Now(),
}).Error; err != nil {
return err return err
} }
@@ -114,13 +115,17 @@ func (j *MediaProcessWorker) Work(ctx context.Context, job *river.Job[args.Media
} }
// 4. 更新最终状态。 // 4. 更新最终状态。
_, err = models.MediaAssetQuery.WithContext(ctx). if err := models.MediaAssetQuery.WithContext(ctx).
Where(models.MediaAssetQuery.ID.Eq(asset.ID)). UnderlyingDB().
Updates(&models.MediaAsset{ Model(&models.MediaAsset{}).
Status: finalStatus, Where("id = ?", asset.ID).
UpdatedAt: time.Now(), Updates(map[string]any{
}) "status": finalStatus,
return err "updated_at": time.Now(),
}).Error; err != nil {
return err
}
return nil
} }
func (j *MediaProcessWorker) registerCoverAsset(ctx context.Context, asset *models.MediaAsset, coverFile string) error { func (j *MediaProcessWorker) registerCoverAsset(ctx context.Context, asset *models.MediaAsset, coverFile string) error {