YAOTU INSIGHTS

ComfyUI-zhenzhen 源码解析:30 路并发提交框架,有界线程池如何玩转稳定并发

ComfyUI-zhenzhen 源码解析:30 路并发提交框架,有界线程池如何玩转稳定并发
【免费下载链接】Comfyui-zhenzhenhttps://ai.t8star.org/register?affdP7j Comfyui的各种平价API调用节点支持seedance2.0满血版支持真人不排队项目地址https://gitcode.com/gh_mirrors/co/Comfyui-zhenzhen点击查看免费下载ComfyUI-zhenzhen 是一款面向 ComfyUI 的平价 AI 模型 API 调用插件内置并发提交框架图片任务最多 30 路、视频任务最多 10 路同时提交靠有界线程池 信号量闸门保证不压垮服务器。本文用通俗的方式带你读懂它的并发提交机制、30 路上限的设计以及如何在 ComfyUI 中实际使用这些并发节点。为什么要做并发提交框架在 ComfyUI 里调用一次生图或生视频 API通常需要提交任务 → 轮询状态 → 下载结果三个步骤耗时从几秒到几分钟不等。如果你的工作流里要生成 30 张不同提示词的图片逐个执行会非常漫长。zhenzhen 插件的解法是给每个生成节点自动克隆一个Concurrent Submit并发提交节点把真正耗时的 API 调用丢进后台线程池同时最多 30 路图片 / 10 路视频并行跑最后由一个收集节点按原始顺序把结果收回来。插件加载时在init.py 里完成节点注册把Comfly.py中的原始节点加上 ComflyConcurrent.py 自动生成的并发节点合并进 ComfyUI 的节点表——整个过程对原有节点零侵入。三大件Submit 节点、有界线程池、Collect 节点整个框架由三部分组成就像餐厅里的点单 → 后厨 → 传菜组件类比源码位置ComflyConcurrent_xxx_Submit节点点单只登记订单立刻返回_make_submit_class_BoundedExecutor有界线程池后厨限流做菜_BoundedExecutorConcurrent Collect收集节点传菜按桌号顺序上菜ComflyConcurrentImageAwait / ComflyConcurrentVideoAwaitSubmit 节点并不真正执行生成逻辑。它的submit()方法把原始节点类ORIGINAL_NODE_CLASS和参数打包后扔进线程池然后立刻返回一个轻量的任务句柄ConcurrentTask本质是concurrent.futures.Future。所以在画布上一连串 Submit 节点会瞬间跑完真正的时间花在后台。有界线程池为什么叫有界无界并发看似更快但对 API 服务器是灾难几十路请求瞬间涌入轻则触发限流重则把服务打挂。zhenzhen 用了一个精巧的双闸门设计线程池限宽ThreadPoolExecutor固定 30图片/ 10视频个工作线程同一时刻最多这么多任务在真正执行。信号量限量BoundedSemaphore(max_workers max_pending)控制正在执行 排队中的任务总数上限默认等于线程数即不额外排队见 BoundedSemaphore 初始化。submit()提交任务时采用非阻塞轮询每 0.25 秒尝试一次拿锁拿不到配额就继续等期间还会检查两件事线程池是否已被关闭比如插件被重新加载ComfyUI 是否收到Cancel 中断信号comfy.model_management.processing_interrupted见 _processing_interrupted。一旦你点了取消排队中的任务会被及时放行并抛出中断异常不会让你干等。线程数还支持环境变量微调COMFLY_IMAGE_CONCURRENCY、COMFLY_VIDEO_CONCURRENCY以及对应的*_PENDING取值会被限制在 1~128 的合理区间见 环境变量读取。收集节点槽位顺序与两种失败模式收集节点ComflyConcurrent_Image_Await有task_1~task_30共 30 个输入槽视频为 10 个每个槽接一个 Submit 节点输出的任务句柄。核心逻辑在 _collect按槽位还原顺序用concurrent.futures.wait轮询等待谁先完成谁先被记录但最终按task_1、task_2… 的编号放进输出槽image_1、image_2…。第 3 个任务最先跑完它也会乖乖排到第 3 个输出里。placeholder 占位每个槽先放一张空白占位图或空视频适配器未连接的槽标记为not_connected不会让整条工作流崩溃。进度条通过comfy.utils.ProgressBar实时刷新已完成 X / 共 N前端能看到整体进度。failure_mode提供两种策略模式行为适用场景fail_fast默认任一任务失败 → 取消其余排队任务整节点报错任务相互依赖宁缺毋滥placeholder失败槽位保留占位媒体其余照常输出批量出图允许个别失败错误信息还会先经过一层脱敏处理API Keysk-...和 URL 会被替换成[REDACTED_API_KEY]/[REDACTED_URL]最多保留 500 字符见 _sanitize_message避免敏感信息泄露到界面和日志里。最后一个输出是status一段 JSON 字符串逐槽记录success/failed/not_connected状态、对应节点名和脱敏后的错误摘要方便排查30 张里哪张挂了。并发上限怎么定的30 路图片、10 路视频注册逻辑会扫描插件里所有节点见 节点注册循环满足以下条件的才会被自动生成并发版本主输出类型是IMAGE或VIDEO音频、3D 等多媒体节点不适用来自插件内置的白名单模块Comfly、seedance_low_price_nodes、midjourney_low_price_nodes等见 ALLOWED_MODULES分类以zhenzhen开头且节点未显式声明COMFLY_CONCUNDENT_DISABLEDCOMFLY_CONCURRENT_DISABLED。30 / 10 这两个上限是刻意保守的图片 API 响应相对快30 路可以在几十秒内消化完一批素材同时不超过常见服务商的速率限制视频 API 单任务耗时长分钟级、占用上游队列大10 路既能显著提升吞吐又不会长时间霸占配额。新节点接入框架几乎是自动的——这也是为什么插件更新日志里反复出现自动接入现有 30 路图片并发 / 10 路视频并发提交框架的描述。实际使用30 路并发的示例工作流仓库内置了两份空 Key 示例可直接导入 ComfyUIworkflow/并发示例-图片多任务30路上限.jsonAPI Settings → 2 个ComflyConcurrent_Comfly_zhenzhen_image_nb_lowprice_Submit任务 A / 任务 B→ComflyConcurrent_Image_Await最多 30 路→ SaveImage。workflow/并发示例-视频多任务10路上限.json同样的结构换成视频提交与收集节点。使用步骤很简单把示例里成对的 Submit 节点复制成 N 份N ≤ 30分别填入不同的提示词 / 参数依次连到ComflyConcurrent_Image_Await的task_1~task_N槽位运行工作流提交阶段瞬间完成随后在进度条上观察后台并发跑完的情况输出端会按槽位顺序给出 N 张图片和一段status汇总。前端脚本还做了名称兼容凡是ComflyConcurrent_XXX_Submit形式的节点会剥掉前后缀还原出原始节点名来匹配动态 UI例如 web/js/dynamic_widget_ui.js 里的originalNodeName逻辑所以并发节点和原始节点在界面上的控件表现完全一致。稳定性验证测试如何证明真的并发插件的测试套件对并发框架做了三层验证上限探测用假节点 屏障Barrier确认图片池最大同时在跑数恰好等于 30、视频池等于 10且槽位顺序不乱见 test_image_pool_reaches_30_and_preserves_slot_order失败与脱敏注入异常验证fail_fast抛错、placeholder兜底以及 API Key / URL 不出现在状态输出中见 test_legacy_future_and_failure_modes_are_supported_and_redacted真实付费冒烟tests/live_concurrent_nodes.py 会真实提交 2 路图片 2 路视频任务记录各请求的时间区间断言两路请求在时间上有重叠——这直接证明了并发确实发生而不是排队串行。此外底层 HTTP 会话按线程隔离thread-local且连接池有尺寸上限多线程共用不会互相踩踏这部分同样被测试覆盖见 test_seedance_sessions_are_thread_local_with_sized_pools。小结ComfyUI-zhenzhen 的并发提交框架可以概括为一句话Submit 节点秒回任务句柄有界线程池按 30 / 10 路上限并行执行Collect 节点按槽位还原顺序并给出状态汇总。有界设计线程数 信号量配额 中断检查让它既快又稳不会打爆 API 配额取消操作也能及时生效敏感信息不会外泄。对新手来说你不需要理解每一行实现——找到带Concurrent Submit的节点、参考 workflow/并发示例-图片多任务30路上限.json 连线就能把一张张排队等变成一批批同时出。赞分享【免费下载链接】Comfyui-zhenzhenhttps://ai.t8star.org/register?affdP7j Comfyui的各种平价API调用节点支持seedance2.0满血版支持真人不排队项目地址https://gitcode.com/gh_mirrors/co/Comfyui-zhenzhen点击查看免费下载相关推荐Comfyui-zhenzhen 并发节点完全指南30 路图片 10 路视频并发提交搭建与示例工作流Comfyui zhenzhen 并发节点完全指南30 路图片 10 路视频并发提交搭建与示例工作流 在 ComfyUI 中批量调用大模型 API 时一Kstry的并发框架Kstry的并发框架 Kstry的并发框架是其核心能力之一通过灵活的任务调度和线程管理机制实现了高效的流程编排和执行。本文将从设计原理、并行网关与包含网关的后端任务调度工作流自动化Rust并发代码分析Flowistry如何处理多线程交互Rust并发代码分析Flowistry如何处理多线程交互 在多线程Rust开发中开发者常面临数据竞争、内存安全和代码可读性的三重挑战。Flowistry作为创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考