jupyter notebook删除文件失败 Delete Failed Invalid response: 500 Internal Server Error

在ubuntu服务器上开了jupyter,远程访问的时候,在UI界面上删除某个文件,前端提示Delete Failed Invalid response: 500 Internal Server Error。
服务器后端报错信息如下:

[W 11:14:20.929 LabApp] delete /data/jiangtan/untitled.txt
[E 11:14:20.931 LabApp] Uncaught exception DELETE
    Traceback (most recent call last):
      File "/home/jiangtanzju/software/anaconda3/lib/python3.7/site-packages/tornado/web.py", line 1592, in _execute
        result = yield result
      File "/home/jiangtanzju/software/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 1133, in run
        value = future.result()
      File "/home/jiangtanzju/software/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 326, in wrapper
        yielded = next(result)
      File "/home/jiangtanzju/software/anaconda3/lib/python3.7/site-packages/notebook/services/contents/handlers.py", line 235, in delete
        yield gen.maybe_future(cm.delete(path))
      File "/home/jiangtanzju/software/anaconda3/lib/python3.7/site-packages/notebook/services/contents/manager.py", line 279, in delete
        self.delete_file(path)
      File "/home/jiangtanzju/software/anaconda3/lib/python3.7/site-packages/notebook/services/contents/filemanager.py", line 540, in delete_file
        send2trash(os_path)
      File "/home/jiangtanzju/software/anaconda3/lib/python3.7/site-packages/send2trash/plat_other.py", line 192, in send2trash
        trash_move(path_b, dest_trash, topdir)
      File "/home/jiangtanzju/software/anaconda3/lib/python3.7/site-packages/send2trash/plat_other.py", line 103, in trash_move
        os.rename(src, op.join(filespath, destname))
    OSError: [Errno 18] Invalid cross-device link: b'/data/jiangtan/untitled.txt' -> b'/home/jiangtanzju/.local/share/Trash/files/untitled 1.txt'

解决方案

.jupyter/jupyter_notebook_config.py文件中加入(会导致删除后的文件无法恢复):

c.FileContentsManager.delete_to_trash = False

保存后重新启动jupyter即可

原因

在jupyter的前端删除一个文件时,开发者希望能够把文件移动到垃圾箱里(原因见此撕逼记录),于是他们使用了send2trash这个python包来实现。但这个包的使用有众多的限制,例如要求在linux平台下被删除的文件必须和用户主目录位于同一设备上,否则就会报我上面贴的那个OSError: [Errno 18]这个error。

于是在这种情况下,后端会在用户删除文件的时候,粗略的检查一下该情况下是否能使用send2trash(源码)

但这种粗略的判断会遗漏掉很多情况,例如开启jupyter的用户,其主目录是位于一个docker容器内。在这种情况下,删除文件的路径和用户主目录并不在同一设备下,而这种判断方式却认为是在同一设备中,从而导致了send2trash的误用。

我推断上方的解决方案中加入的c.FileContentsManager.delete_to_trash = False就是让这里的self.delete_to_trash变成了False,从而强制不使用send2trash,强制删除文件而不是移动文件到垃圾箱,于是避免了error。

开发者同样在一个issue里指出了这一个小BUG:
在这里插入图片描述

不过看了看当时开发者提PR的comments,感觉这个BUG是不会修复了…
在这里插入图片描述
不过讲道理,我觉得这个主要是os.rename的锅,也就是send2trash这个包的问题,同样也有人提了相关issue,如jupyterlab#5781,不过尚未得到有效回复和解决。

在 Grafana 中遇到 `request failed, status: 500 Internal Server Error` 报错,说明请求后端服务(如 Zabbix 数据源、Prometheus、MySQL 等)时发生了服务器内部错误。这个错误通常不是由 Grafana 本身引起的,而是由后端数据源或插件处理请求时出错导致。 --- ### 常见原因及解决方法: --- ### 1. 数据源配置错误(如 Zabbix) - **错误的 Zabbix API 地址或认证信息**:检查数据源配置中的 URL、用户名、密码是否正确。 - **Zabbix API 未运行或访问受限**:确保 Zabbix server 的 API 可以被 Grafana 服务器访问。 - **SSL 证书问题**:如果使用 HTTPS,尝试在数据源设置中勾选 `Skip TLS verification`。 ✅ **解决方法**: - 在 Grafana 中进入 **Data Sources → 你的 Zabbix 数据源 → Save & Test**,查看具体错误信息。 --- ### 2. 插件问题(如 zabbix 插件版本不兼容) - 插件与 Grafana 或 Zabbix 版本不兼容。 - 插件未正确安装或需要升级。 ✅ **解决方法**: - 升级插件: ```bash grafana-cli plugins update alexanderzobnin-zabbix ``` - 查看插件日志: ```bash journalctl -u grafana-server ``` 或查看 Grafana 的日志文件(通常位于 `/var/log/grafana/grafana.log`)。 --- ### 3. 查询语句语法错误(面板数据查询) - 查询语句中使用了非法的正则表达式、变量或 item key。 - 例如:`{host:/.*`(缺少闭合括号)、`system.cpu.util[invalid,param]` 等。 ✅ **解决方法**: - 检查面板的查询语句是否正确; - 使用简单查询测试是否能返回数据; - 在变量中选择单台主机,看是否能正常显示。 --- ### 4. 后端服务(Zabbix server)出错 - Zabbix server 内部错误导致 API 返回 500; - 数据量过大导致 Zabbix 崩溃或超时。 ✅ **解决方法**: - 查看 Zabbix server 的日志(通常位于 `/var/log/zabbix/zabbix_server.log`); - 尝试简化查询,减少同时请求的主机/指标数量。 --- ### 5. 资源不足或超时 - 查询的数据量太大,导致后端处理超时; - 内存或 CPU 不足导致服务崩溃。 ✅ **解决方法**: - 限制时间范围; - 减少同时查询的主机数量; - 调整 Zabbix 的超时设置(在插件配置中); - 升级服务器资源配置。 --- ### 推荐排查步骤 1. 查看 Grafana 日志和 Zabbix 日志; 2. 使用 `curl` 测试 Zabbix API 是否能正常返回数据; 3. 检查数据源配置是否正确; 4. 更新插件和 Grafana; 5. 简化面板查询语句并逐步测试。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值