diff --git a/apps/worker/worker_app/tasks/generation.py b/apps/worker/worker_app/tasks/generation.py index b9856e6f3..3c79bfc2a 100644 --- a/apps/worker/worker_app/tasks/generation.py +++ b/apps/worker/worker_app/tasks/generation.py @@ -706,38 +706,34 @@ def generate_video(self, task_id: str) -> dict: _update_task_progress(task_id, 80, "渲染完成") # ── 4. 上传 OSS + 查重记录 ─────────────────────────────── - _update_task_progress(task_id, 85, "开始上传") - file_url, duration, file_size, video_count = _upload_and_record( - task_id=task_id, - output_path=output_path, - project_id=project_id, - batch_id=batch_id, - editing_mode=editing_mode, - user_id=user_id, - video_name=task_info.get("video_title", ""), - ) - - if gen_task: - gen_task.append_log( - "OSS上传", - f"上传成功, 大小={file_size}", - file_size=file_size, - file_url=file_url, + try: + _update_task_progress(task_id, 85, "开始上传") + file_url, duration, file_size, video_count = _upload_and_record( + task_id=task_id, + output_path=output_path, + project_id=project_id, + batch_id=batch_id, + editing_mode=editing_mode, + user_id=user_id, + video_name=task_info.get("video_title", ""), ) - _flush_logs(task_id, gen_task) - _update_task_progress(task_id, 95, "上传完成") + if gen_task: + gen_task.append_log( + "OSS上传", + f"上传成功, 大小={file_size}", + file_size=file_size, + file_url=file_url, + ) + _flush_logs(task_id, gen_task) - # ── 4.1 清理渲染临时目录 ──────────────────────────────────────────── - if render_temp_dir: - import shutil as _shutil - - try: + _update_task_progress(task_id, 95, "上传完成") + finally: + # ── 4.1 清理渲染临时目录(无论上传成功与否都清理) + if render_temp_dir: + import shutil as _shutil _shutil.rmtree(render_temp_dir, ignore_errors=True) logger.info("[task_id=%s] 渲染临时目录已清理: %s", task_id, render_temp_dir) - except Exception: - logger.warning("[task_id=%s] 渲染临时目录清理失败: %s", task_id, render_temp_dir, exc_info=True) - # ── 4.5 封面帧持久化 ──────────────────────────────────────────── try: if cover_candidates: