fix(worker): 修复素材下载——asset_id查assets表拿file_url + 统一OSS配置读取 #471
Reference in New Issue
Block a user
Delete Branch "fix/worker-oss-settings-unified"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题根因(两个)
根因1(主要):render_adapter.py _download_assets 直接把 asset_id 当 OSS key 用
RenderAdapter._download_assets()把clip.asset_id(UUID主键)直接传给download_asset()当OSS存储路径,但 asset_id 是数据库主键,不是OSS上的文件路径。正确做法应该是先通过 asset_id 查assets表拿到file_url(真正的OSS存储路径),再用 file_url 下载。对比
edit_plan_generation.py里的 legacy 路径和_prepare_bgm()方法,都是先查 AssetModel 拿 file_url 再下载,唯独 render_adapter 的 _download_assets 写错了。根因2(次要):两套独立的OSS配置读取路径
Worker端存在两套OSS配置读取:
SharedStorageService→ pydantic-settings + .env文件oss_helpers.oss_settings()→ 直接 os.getenv(),不读.env如果OSS配置写在.env文件里(大部分Docker部署),oss_helpers读不到配置 → oss_bucket()返回None → 下载静默失败。
修复内容
1. render_adapter.py 素材下载逻辑修复
_download_assets()从 staticmethod 改为实例方法AssetModel获取file_url(OSS存储路径)file_url作为 key 调用download_asset()2. oss_helpers.py 配置读取统一
oss_settings()改用get_shared_settings()读取配置影响范围
apps/worker/video_processing/render_adapter.py— _download_assets 方法重写apps/worker/video_processing/oss_helpers.py— oss_settings 配置读取统一fix(worker): 统一OSS配置读取为SharedSettings,修复素材下载静默失败to fix(worker): 修复素材下载——asset_id查assets表拿file_url + 统一OSS配置读取CI全绿,自动审批通过。
CI全绿,自动审批通过。