【笔记】ComfyUI “OSError: [WinError 38] 已到文件结尾” 报错解决方案

ComfyUI "OSError: [WinError 38] 已到文件结尾" 报错解决方案

ComfyUI version: v0.6.0

错误现象

运行过程中(通常在预览视频、音频或大图时)控制台报错:

Traceback (most recent call last):

File "H:\PythonProjects1\Win_ComfyUI.venv\Lib\site-packages\aiohttp\web_protocol.py", line 602, in start

resp, reset = await task

^^^^^^^^^^

File "H:\PythonProjects1\Win_ComfyUI.venv\Lib\site-packages\aiohttp\web_protocol.py", line 535, in _handle_request

resp, reset = await self.finish_response(request, resp, start_time)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "H:\PythonProjects1\Win_ComfyUI.venv\Lib\site-packages\aiohttp\web_protocol.py", line 713, in finish_response

await prepare_meth(request)

File "H:\PythonProjects1\Win_ComfyUI.venv\Lib\site-packages\aiohttp\web_fileresponse.py", line 288, in prepare

return await self._prepare_open_file(request, fobj, st, file_encoding)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "H:\PythonProjects1\Win_ComfyUI.venv\Lib\site-packages\aiohttp\web_fileresponse.py", line 418, in _prepare_open_file

return await self._sendfile(request, fobj, offset, count)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "H:\PythonProjects1\Win_ComfyUI.venv\Lib\site-packages\aiohttp\web_fileresponse.py", line 147, in _sendfile

await loop.sendfile(transport, fobj, offset, count)

File "D:\A\envs\py312\Lib\asyncio\base_events.py", line 1232, in sendfile

return await self._sendfile_native(transport, file,

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "D:\A\envs\py312\Lib\asyncio\proactor_events.py", line 768, in _sendfile_native

return await self.sock_sendfile(transp._sock, file, offset, count,

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "D:\A\envs\py312\Lib\asyncio\base_events.py", line 919, in sock_sendfile

return await self._sock_sendfile_native(sock, file,

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "D:\A\envs\py312\Lib\asyncio\proactor_events.py", line 756, in _sock_sendfile_native

await self._proactor.sendfile(sock, file, offset, blocksize)

File "D:\A\envs\py312\Lib\asyncio\windows_events.py", line 803, in _poll

value = callback(transferred, key, ov)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "D:\A\envs\py312\Lib\asyncio\windows_events.py", line 462, in finish_socket_func

return ov.getresult()

^^^^^^^^^^^^^^
OSError: [WinError 38] 已到文件结尾。

关键报错信息:

复制代码
**OSError: [WinError 38] 已到文件结尾。**

Traceback 指向 aiohttp 的 sendfile 调用链(web_fileresponse.py → proactor_events.py)。

错误本质

Windows 系统下 asyncio 的 sendfile 在发送静态文件(output 中的 mp4、wav、长图等)时出现问题:

  • 文件刚生成完,句柄尚未完全释放。
  • 文件被杀毒软件/云盘同步工具短暂锁定。
  • 大文件或低内存环境下 Windows proactor 实现不稳定。

重要:该错误仅影响浏览器实时预览,图片/视频/音频文件本身生成正常(output 文件夹里完整可用)。

解决方案(按推荐顺序)

  1. 最简单:直接忽略

    生成结果不受影响,手动去 ComfyUI\output 文件夹查看文件即可。很多用户长期如此使用。

  2. 避免触发

    • 使用 VHS_VideoCombine 等节点时,勾选 "skip video/audio preview" 或不连接预览节点。
    • 生成后手动刷新 output 文件夹。
  3. 排除外部干扰

    • 将 ComfyUI 整个文件夹(尤其是 output 子文件夹)加入杀毒软件(360、火绒、Windows Defender)白名单。
    • 暂停 OneDrive、百度网盘、Dropbox 等对 output 文件夹的实时同步/扫描。
  4. 禁用 sendfile(推荐永久修复)

    设置环境变量 AIOHTTP_NOSENDFILE=1,强制 aiohttp 使用普通 read/write 发送文件(速度略慢,几乎无感知)。

    永久设置方法(一次设置,长期有效)

    • 打开命令提示符(建议管理员权限):

      复制代码
      setx AIOHTTP_NOSENDFILE "1"

      (普通用户级,推荐)

      复制代码
      setx AIOHTTP_NOSENDFILE "1" /M

      (系统级,需要管理员权限)

    • 设置成功后提示 SUCCESS: Specified value was saved.

    • 必须完全关闭并重启

      • 关闭所有 cmd/PowerShell 窗口
      • 完全退出 PyCharm(包括托盘)
      • 重新启动 ComfyUI
    • 验证:

      复制代码
      echo %AIOHTTP_NOSENDFILE%

      输出应为 1

    临时设置方法(测试用):

    • 在启动 bat 文件最上方添加:

      复制代码
      set AIOHTTP_NOSENDFILE=1
    • 或 PyCharm Run Configuration → Environment variables 添加该变量。

  1. 更新 ComfyUI
    最新版(2025 年以后)已对 WinError 38 增加容错处理。
    • 运行 update.bat 或 Manager 中 Update ComfyUI。

推荐最终配置

  • 执行一次 setx AIOHTTP_NOSENDFILE "1"
  • 重启 PyCharm/ComfyUI
  • 清理 bat 文件和 Run Configuration 中重复的环境变量设置

设置完成后,视频/音频/大图预览将不再报 [WinError 38],体验最流畅。

记下来,下次遇到直接 setx 一次搞定!祝使用愉快~

相关推荐
Token_w3 小时前
CANN算子量化——AIGC轻量化部署的低精度算子适配方案
aigc
lili-felicity3 小时前
CANN异步推理实战:从Stream管理到流水线优化
大数据·人工智能
那个村的李富贵3 小时前
CANN驱动下的AIGC“智能抠图”:基于Mask2Former的高性能图像分割实战
aigc·cann
做人不要太理性3 小时前
CANN Runtime 运行时组件深度解析:任务下沉执行、异构内存规划与全栈维测诊断机制
人工智能·神经网络·魔珐星云
不爱学英文的码字机器3 小时前
破壁者:CANN ops-nn 仓库与昇腾 AI 算子优化的工程哲学
人工智能
晚霞的不甘3 小时前
CANN 编译器深度解析:TBE 自定义算子开发实战
人工智能·架构·开源·音视频
愚公搬代码3 小时前
【愚公系列】《AI短视频创作一本通》016-AI短视频的生成(AI短视频运镜方法)
人工智能·音视频
哈__3 小时前
CANN内存管理与资源优化
人工智能·pytorch
极新3 小时前
智启新篇,智创未来,“2026智造新IP:AI驱动品牌增长新周期”峰会暨北京电子商务协会第五届第三次会员代表大会成功举办
人工智能·网络协议·tcp/ip
island13143 小时前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构任务的 Stream 调度机制
开发语言·人工智能·深度学习·神经网络