From debadc0cfc7096e4cd1862e92af5f551d8eef0e9 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Mon, 24 Aug 2026 17:43:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=B8=B4=E6=97=B6=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E6=B8=85=E7=90=86=E7=A7=BB=E5=85=A5try/finally?= =?UTF-8?q?=E7=A1=AE=E4=BF=9D=E4=B8=8A=E4=BC=A0=E5=A4=B1=E8=B4=A5=E6=97=B6?= =?UTF-8?q?=E4=B9=9F=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 回应AI Code Review建议:将rmtree调用放入finally块, 确保_upload_and_record异常时临时目录仍被清理,避免磁盘泄漏。 --- apps/worker/worker_app/tasks/generation.py | 50 ++++++++++------------ 1 file changed, 23 insertions(+), 27 deletions(-) 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: