#25710·mlflow

[BUG] .ipynb 笔记本文件被服务为 application/octet-stream 而不是 text/plain

作者: harshal-paltse创建于 2026年9月8日更新于 2026年9月17日
标签bugarea/uiuxarea/trackinghas-closing-prready

<! -- 发出警告 > [呻

在提交公关前,请确保:

  • 维护者对该问题进行了三分法并应用了 " 准备 " 标签
  • 这个问题没有受让人
  • 没有重复的 PR 存在 翻译: 不符合这些要求的PR可以自动关闭.

政策确认

你在哪里遇到这个虫子的?

当地机器

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
  • [ ]`区域/评价':管理流程模型评价特征、评价衡量标准和评价工作流程
  • [ . . . . . . .