fix: 渲染产物临时目录不在render_plan中提前清理,改由调用方上传后清理 #1484
Reference in New Issue
Block a user
Delete Branch "fix/temp-dir-cleanup-race"
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?
问题
render_adapter.py的render_plan方法在finally块中shutil.rmtree清理了临时目录,但generation.py的_upload_and_record还需要访问临时目录中的渲染产物文件进行 OSS 上传,导致FileNotFoundError。修复
RenderAdapterResult增加temp_dir字段:将临时目录路径传递给调用方render_plan成功时不清理:成功路径中将temp_dir赋给 result 后置 None,阻止 finally 清理render_plan失败时仍清理:异常路径不受影响,finally 正常清理generation.py上传后清理:在_upload_and_record完成后调用shutil.rmtree清理临时目录改动文件
apps/worker/video_processing/render_adapter.py:+7/-1apps/worker/worker_app/tasks/generation.py:+14/-2tests/unit/test_temp_dir_cleanup_race.py:新增 4 个回归测试验证
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
dc51d950e3to4295f20fd6ed1c5e82acto6b67bb948b代码审查结果 - PR #1484
⚠️ 问题(0个需要修改)
无
💡 建议(2个可选)
import shutil放在finally块内部不符合常规的代码组织习惯,虽然 Python 允许这样做,但建议将标准库的导入语句统一放在文件顶部,以提高代码可读性和加载效率。assert "temp_dir = None" in source)来验证逻辑,这种方式较为脆弱,容易因代码格式化(如去除空格)而失败。建议使用 AST(抽象语法树)遍历来精确检查赋值逻辑,类似于test_render_adapter_result_has_temp_dir_field中的实现方式。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-08-24 13:06:41 | 模型:
🗑️ 预览环境已清理
PR #1484 已关闭或合并,对应的预览环境已被清理。