[BUG] .ipynb 笔记本文件被服务为 application/octet-stream 而不是 text/plain
<! -- 发出警告 > [呻
在提交公关前,请确保:
- 维护者对该问题进行了三分法并应用了 " 准备 " 标签
- 这个问题没有受让人
- 没有重复的 PR 存在 翻译: 不符合这些要求的PR可以自动关闭.
政策确认
- 我已根据[问题政策]阅读并同意提交错误报告(https://www.GitHub.com/mlflow/mlflow/blob/master/ISSUE POLICY.md)
你在哪里遇到这个虫子的?
当地机器
QQ ML流量版本
- 客户:3.x.y
- 跟踪服务器:3.x.y
系统信息
- OS平台与发行(如:Linux Ubuntu 16.04):Ubuntu 22.04 / Windows 11(可在任何OS上复制)
- Python版本:3.10+
- 说明问题
Jupyter笔记本 (.ipynb) 记录为MLflow文物的文件总是服务于Content-Type:应用程序/octet-stream,尽管.ipynb文件是纯文本的JSON. 这迫使浏览器下载文件,而不是允许跟踪服务器UI(或任何依赖文物的MIME类型的客户端)像其他基于文本的文物(.py,.json,.md,.yaml等)一样进行预览/内置.
根因: mlflow/utils/mime type utils.py's gues mime type () 首先检查一个被硬编码的 get text extensions () 允许列表,然后返回到 Python的stdlib mimetypes.guess type (). 两个路径都认不出. ipynb:
.ipynb 在 get text extensions () 中不存在. mimetypes.gues type ("Notebook.ipynb") 返回(None, None),因为.ipynb不是stdlib中已注册的MIME类型.
因此, guess mime type () 掉入到二进制倒计时并返回应用程序/octet-stream.
预期行为:.ipynb文件应被检测为文本/平面文件(或应用程序/x-ipynb+json)并可在文物浏览器中查看,与处理.py,.json,和.md文件的方式一致.
实际行为:.ipynb文件总是作为不透明的二进制处理,并强制在UI/文物取景器中下载,而不是渲染出内线.
跟踪信息
不适用 - 这是静态的 MIME 型检测错误, 不指定运行 。
复制问题的编码
从 mlflow.utils.mime type utils导入 guess mime type
打印( gues mime type ("Notebook.ipynb"))
实际:应用/八流
预期:文本/平面
QQ 堆积跟踪
N/A - 这是行为/逻辑错误, 不是崩溃 。 没有提出例外。
其他信息/日志
导入 ml流量
与 mlflow. start run () 连接: mlflow.log artifact ("Notebook.ipynb") (英语).
愿意作出贡献
对 我可以独立地为这个虫子做一个修复
QQ 此错误会影响哪些组件 ?
- `地区/跟踪 ' : 跟踪服务,跟踪客户端 API,自动日志
- `地区/模式登记 ' : 示范登记服务、API和流利的客户要求示范登记
- `地区/评分':提供ML流量模型、部署工具、Spark UDFs
- [ ]`区域/评价':管理流程模型评价特征、评价衡量标准和评价工作流程
- [ . . . . . . .
内容来源: mlflow/mlflow