You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SageMaker实例下载S3文件遇Device or resource busy错误求助

解决SageMaker实例从S3下载数据时的OSError: Errno 16问题

问题根源

你的代码存在逻辑错误:在循环遍历每个JSON文件时,每次都调用sagemaker_session.download_data并传入整个FOLDER_PREFIX,这会导致重复触发整个文件夹的下载操作。多个并行/重复的下载任务会争抢transcript_data/目录的资源,引发临时文件(如transcript_data/..Aea2DBEA)无法完成重命名的冲突,最终抛出"Device or resource busy"错误。

修复方案

根据你的需求,选择以下两种修正方式之一:

方式1:一次性下载整个文件夹(推荐)

如果目标是获取FOLDER_PREFIX下所有JSON文件,无需循环,直接调用一次download_data即可:

LOCAL_PATH = "transcript_data/"
# 直接下载整个前缀下的内容,无需遍历文件
sagemaker_session.download_data(path=LOCAL_PATH, bucket=bucket, key_prefix=FOLDER_PREFIX)

方式2:逐个下载单个JSON文件

如果需要精确控制只下载JSON文件,循环时传入单个文件的key而非整个前缀:

LOCAL_PATH = "transcript_data/"
files = sagemaker_session.list_s3_files(bucket, FOLDER_PREFIX)
for file in files:
    if file.endswith('.json'):
        # 传入单个文件的key,而非前缀
        sagemaker_session.download_data(path=LOCAL_PATH, bucket=bucket, key_prefix=file)

额外排查步骤

如果修复代码后仍报错:

  • 检查transcript_data/目录是否被其他进程占用:在终端执行lsof +D transcript_data/查看是否有进程在读写该目录,关闭占用进程后重试。
  • 清理残留的临时文件:手动删除transcript_data/目录下以..开头的临时文件,再重新执行下载。

内容的提问来源于stack exchange,提问作者Luka Savic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:25:12