DIFY接口串行执行的问题
场景与问题描述复盘
- 测试场景
环境配置:已修改 .env 配置文件,设置 APP_MAX_ACTIVE_REQUESTS=0(无限制)和 GRAPH_ENGINE_MIN_WORKERS=5(最小5个Worker),旨在开启高并发模式。
测试工具:使用 Apifox 进行接口调试。
测试对象:Dify 工作流运行接口 POST /workflows/run。
测试方法:
按照顺序(或快速连续)发起了 3 个请求(任务 1、2、3)。
尝试了使用不同的 user 参数(如 user_1, user_2)以排除用户会话锁的影响。
使用了 response_mode: “streaming”(流式模式)。 - 观察到的现象
串行执行:尽管配置了多 Worker 且使用了不同的 User ID,请求依然呈现严格的排队现象。
具体表现:任务 1 必须完全运行结束(连接关闭/响应完成)后,任务 2 才会开始响应;任务 2 结束后,任务 3 才开始。无法实现三个任务同时跑。
解决方案:
https://github.com/langgenius/dify/issues/32609
https://github.com/langgenius/dify/issues/33389
设定env中 CELERY_AUTO_SCALE: “true”
CELERY_MAX_WORKERS: 15
CELERY_MIN_WORKERS: 5
这玩意在1.13版本新引入的特性 坑死我了
