包头市网站建设_网站建设公司_Python_seo优化
2025/12/30 15:38:17 网站建设 项目流程

Sandbox 并发限制导致 Code execution service is unavailable

背景

并发执行工作流时,代码节点报错:Code execution service is unavailable

问题原因

代码节点运行在沙盒(sandbox)服务中,而 sandbox 服务默认配置:

  • max_workers: 4
  • max_requests: 50

sandbox 默认配置

参数含义

  • max_workers:控制“同时真正开始执行 run 逻辑的并发上限”。实现为一个带容量的信号量 channel。当并发超过 max_workers 时,请求不会立刻失败,而是在 sem <- struct{}{} 处阻塞排队,等有空位再继续。
  • max_requests:控制“同时在处理链路中的请求总数上限”(更准确说:in-flight 数量)。实现为一个 current 计数器。当 current >= max_requests 时,直接返回 503 + "Too many requests"

相关代码片段:

m.lock.RLock()
if m.current >= max {m.lock.RUnlock()c.JSON(http.StatusServiceUnavailable, types.ErrorResponse(-503, "Too many requests"))c.Abort()return
}

解决办法

在 Dify 的 docker-compose.yaml 中对 sandbox 部分配置进行修改,新增 MAX_WORKERSMAX_REQUESTS 的环境变量。

示例:

MAX_WORKERS: ${SANDBOX_MAX_WORKERS:-400}
MAX_REQUESTS: ${SANDBOX_MAX_REQUESTS:-5000}

docker-compose 添加环境变量

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询