乐于分享
好东西不私藏

解决dify安装插件失败后无限循环报错的问题

解决dify安装插件失败后无限循环报错的问题

一、问题产生的原因及现象:

之前通过dify默认模板安装了一个“美股投资分析助手”的工作流,这工作流里自带了“雅虎财经”这个插件,因启用这个工作流时提示“雅虎财经”这个插件无效,就在“Marketplace”手动安装了,这一下跟捅了马蜂窝一样,这样“雅虎财经”的插件陷入“正在安装–安装失败–正在安装”的死循环。整出100安装失败的记录。

同时,导致docker中的插件容器“docker-plugin_daemon-1”疯狂抢夺系统资源,CPU、内存全部被拉满。

二、问题排除如下:

第一步:物理层清楚插件安装文件

进入D:\dify\docker\volumes\plugin_daemon\plugin_packages ,删除所有以 yahoo 开头或大小为0的 .zip/.tar.gz  文件

进入D:\dify\docker\volumes\plugin_daemon\plugin ,找到  yahoo  相关的文件夹并彻底删除

提示:为了保险,你可以直接清空 plugin_packages 文件夹,这不会影响已安装成功的插件。

第二步:数据库任务强制抹除

  1. 进入数据库
docker exec -it docker-db_postgres-1 psql -U postgres -d dify

  1. 输入 “\l” 查看数据库列表,确认 dify 库存在

根据“ \l” 的反馈,Dify 的插件数据根本不在 dify 数据库里,而是存储在一个独立的数据库 dify_plugin 中

  1. 进入正确的数据库

在 psql 命令行(dify=# 提示符处)输入:

\c dify_plugin

此时提示符应变为 

dify_plugin=#

  1. 查看与“yahoo”相关的插件记录
SELECT id, plugins, status FROM install_tasks WHERE plugins LIKE '%yahoo%';

满屏幕的失败记录~

执行清理命令

在 dify_plugin=# 提示符下执行:

-- 彻底清空所有插件安装任务记录TRUNCATE TABLE install_tasks;-- 确认表已清空(应该返回 0 rows)SELECT count(*FROM install_tasks;

第三步:清理 Redis 缓存(非常重要)

SQL 只删除了“账本”,Redis 里可能还掐着“执行令”。在 PowerShell 执行:

docker exec -it docker-redis-1 redis-cli flushall

第四步:服务层面:干净重启

# 重启插件守护进程docker restart docker-plugin_daemon-1# 为了保险,建议也重启下 API 容器docker restart docker-api-1

三、为什么会出现这么多重复记录?

这就是典型的“任务僵尸化”:安装程序卡在下载环节(可能是网络问题),守护进程认为任务还没完,于是超时后报错,但由于 Dify 的自动重试机制或前端的反复请求,系统又开启了新的一轮安装,最终导致数据库被垃圾记录填满。

执行 TRUNCATE 后如果日志清净了,请千万别再去点那个 Yahoo 插件的安装按钮了!如果有其他插件需要安装,建议检查你的 Docker 网络是否能顺畅访问 GitHub。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 解决dify安装插件失败后无限循环报错的问题

评论 抢沙发

5 + 1 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮