跳到正文
文章 人工智能

Dify 运行代码报错Code execution service is unavailable

背景

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

问题原因

代码节点运行在沙盒(sandbox)服务中,而 sandbox 服务默认配置有可能是空的,或者是如下这种:

但不管是怎样的,当你在代码节点报: Code execution service is unavailable 。时,你可以进入api或任意容器执行:

当出现:

时,基本就可确定是配置max_workers的原因了,如下:

参数含义

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

相关代码片段:

解决办法

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

示例:

然后,停止主窗口,并重新部署后就会是:

问题解决。

其它参考,对我来说没用,但你们可参考:

https://github.com/langgenius/dify/issues/3675