refactor: 临时目录清理移入try/finally确保上传失败时也清理
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 48s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 25s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m45s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m12s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m21s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m49s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 549h41m15s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 549h41m17s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 549h42m3s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 549h42m3s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 549h42m5s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 549h42m7s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 549h42m7s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 550h15m10s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 550h15m56s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 550h16m0s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 48s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 25s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m45s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m12s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m21s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m49s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 549h41m15s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 549h41m17s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 549h42m3s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 549h42m3s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 549h42m5s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 549h42m7s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 549h42m7s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 550h15m10s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 550h15m56s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 550h16m0s
回应AI Code Review建议:将rmtree调用放入finally块, 确保_upload_and_record异常时临时目录仍被清理,避免磁盘泄漏。
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user