Repository navigation
feat(mq): 延迟队列拆出 i2v 轮询,并并行化生成 IO - #571
Conversation
动作任务不再占用 worker 槽位 sleep 等成片;抽帧改走内存、ONNX 启动预热,降低单机磁盘抖动。 Co-authored-by: Cursor <cursoragent@cursor.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
审查结论
核对了延迟队列到 generation Stream 的投递、动作建单/单次轮询/恢复、worker 并发隔离、视频网关拆分及内存抽帧链路。当前两处实现会分别破坏独立轮询并发和“轮询消息只 inspect 一次”的契约:共享线程池可被单一消息类型占满,且每次未完成轮询都会重复下载母版。
验证方面,python3 -m compileall -q packages tests 与固定 SHA 范围的 git diff --check 通过;按 PR 声明的 pytest 集合未能运行,因为执行环境没有 uv、pytest 及项目依赖。
合并 main 的 fail_task;image 占满共享线程池时 poll 不再排队饿死。
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
MQ 异步拆步后该参数是关键字必填,三渲二路线选择用例没跟着改。
|
为何变更会这么大? 是否因为架构模块模糊的原因,导致修改队列相关的内容时存在大量耦合情况? |
结论变更大,不完全是“队列模块耦合严重”造成的。更主要的原因是这个 PR 同时打包了 4 类改造:
因此它实际上不只是一个 MQ 改动,也是一次生成链路的并发与资源模型重构。 规模拆解固定比较
也就是说,直接属于“新增延迟队列”的代码并没有占据全部变更,IO 并行化和编排器重写贡献了相近甚至更大的规模。 是否存在架构耦合存在,主要集中在生成编排层,而不是 Redis 队列实现本身。
建议拆分
总体判断:约一半是本 PR 范围过宽造成的,另一部分确实暴露了 本次仅做固定提交范围的只读分析,未修改代码或运行测试。 |
executor 只协调 Completed / AwaitingVideo / Failed;recover 不再直接碰 Redis/ZSET。
|
@minorcell 变更大,主要不是 Redis 队列模块糊在一起,而是这个 PR 同时打了四件事:延迟队列、i2v 状态机、poll 独立并发、生成 IO 并行化。胀在编排层: 本 PR 已把 i2v 等待抽到
#571 合入后再跟这两条。 |
Summary
sleep等成片:建单后写入 Redis ZSET 延迟队列,到期以character_action_poll投进现有 generation Stream,只做一次 inspect。Closes #570
Test plan
uv run pytest tests/test_mq_delayed.py tests/test_mq_worker.py tests/test_mq_catalog.py tests/test_generation_orchestration.py tests/test_gateway_video.py tests/test_extract_streaming.py tests/test_sufy_video_download.pycharacter_action槽位