现有流程图:www.processon.com/v/6710a1387…
所有的sd都是锁线程处理的,无法实现并发的效果
高并发优化思路:
- 启动多个服务来处理,多启动实例,启用负载均衡,使用1Panel
- 研究多GPU加速服务
- 使用docker部署,方便后期扩展
其他优化:
- 显示前面有任务:get prompt
- 任务进度条
- 删除当前生图任务
- 模型不用前端自己提供,调用comfyui接口:/object_info
QA
问题:ComfyUI自带队列了,为什么还要自己使用队列?
答:方便扩展,后期可以加入VIP插队等功能,使用优先级队列实现
问题:绘画函数为什么加锁?
答:因为异步函数和队列取出就是5分钟不可见的情况导致很多请求同时到达绘画函数这一步,到了之后按顺序发送prompt请求,A先到了,A来监听然后因为异步,B到了也准备监听,所以发生竞态条件。底层原因是:如果多个协程同时尝试从同一个 WebSocket 连接读取数据,可能会导致竞争条件。WebSocket 协议不支持多个并发读取操作
资料参考
comfyui-api:gitee.com/BTYY/wailik…