refactor(#775): 禁止API直接调用Worker任务函数,必须走Celery队列或shared层 #786
Reference in New Issue
Block a user
Delete Branch "refactor/no-direct-worker-imports"
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?
变更内容
代码质量专项P0第二单:#775 禁止API直接调用Worker任务函数
问题
API层存在5处直接import Worker任务函数的违规:
templates_editor.py-run_ai_recommend同步直接调用templates_editor.py-run_generate_cover同步直接调用tts.py-process_tts_segment_synthesis.delay()import耦合tts.py-process_tts_synthesis.delay()import耦合voice_clones.py-process_voice_clone.delay()import耦合修复方案
AI推荐/封面生成(同步调用场景):
packages/shared/ai_service.pyai_tasks.py改为 re-export,保持向后兼容TTS/音色克隆(异步任务场景):
celery_app.send_task()方式,通过任务名发送验证
代码审查结果 - PR #786
⚠️ 问题(1个需要修改)
_fallback_recommend_clips中使用了time.sleep(0.5)。editor_ai_recommend同步调用。在 Web 请求处理线程中休眠 0.5 秒会阻塞工作线程,在高并发场景下会显著降低 API 吞吐量,甚至可能导致服务响应超时。time.sleep调用。如果是为了模拟耗时,应仅在测试环境中使用,或改为异步实现(如asyncio.sleep),但考虑到这是降级逻辑,建议直接移除休眠以快速返回结果。💡 建议(2个可选)
celery_app.send_task("worker.process_tts_segment_synthesis", ...)。如果 Worker 端的任务名称或命名空间发生变更,此处的硬编码字符串将导致任务调度失败。建议将任务名称定义为常量,或确保与 Worker 注册名称严格一致。__all__中暴露了内部私有函数。__all__列表中包含了_call_ai_recommend_service、_fallback_recommend_clips等带下划线的私有函数。这违反了封装原则,使得外部模块可以直接依赖内部实现细节。建议仅暴露公共接口run_ai_recommend和run_generate_cover。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 13:53:21 | 模型:
🗑️ 预览环境已清理
PR #786 已关闭或合并,对应的预览环境已被清理。