fix(cover): 封面 API MediaKit 抽帧短超时,避免请求挂死 #1460
Reference in New Issue
Block a user
Delete Branch "fix/cover-mediakit-timeout"
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?
问题
PR #1459 新增的 E1/E2 兜底抽帧在 API 请求内同步调用 mk_client.extract_frames(),使用默认 max_poll_attempts=30 * poll_interval=2s,MediaKit 不可达或任务长时间 processing 时单次调用最多阻塞约 60s。E1 失败后 E2 还会再调用,请求可达 2 分钟,前端一直转圈。
修改
验证
部署后验证流程
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
generate_cover中使用了import re as _re。虽然 Python 允许在函数内导入以优化启动时间或避免循环依赖,但在 Web 服务(如 FastAPI)的热加载或长期运行进程中,将标准库导入放在文件顶部通常更符合 Python 编码规范(PEP 8),也有助于提高代码可读性。建议移至文件头部。✅ 良好实践
video_svc.extract_frames时显式增加了poll_interval、max_poll_attempts和max_retries参数,有效防止了因抽帧任务卡死导致 API 请求长时间阻塞,符合“短超时、不阻塞”的业务兜底逻辑。r"(?<!:)//"清理 URL 中的多余斜杠,且使用了负向后瞻(?<!:)精准保护了http://等协议头不被破坏,逻辑严谨。🤖 由 AI 代码审查机器人自动生成 | 2026-08-22 16:06:14 | 模型:
🚀 预览环境已部署
🗑️ 预览环境已清理
PR #1460 已关闭或合并,对应的预览环境已被清理。