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

使用Python下载Azure Blob时大文件触发ConditionNotMet错误

Azure Blob大文件下载失败解决方案

问题概况

用Python的azure.storage.blob库的BlobServiceClient下载Azure Blob时,小文件能正常下载,但100MB及以上的大文件(含700MB+文件)下载失败。试过官方文档里的download_to_stream、readinto方法,以及自定义分块写入的代码,都返回相同错误。当前使用的代码:

with open(path, "wb") as file:
    data = blobclient.download_blob()
    for stream in data.chunks():
        file.write(stream)

可行解决办法

1. 自定义分块大小

默认分块大小可能不适合大文件,手动设置更小的分块(比如4MB),降低单次请求的数据量:

CHUNK_SIZE = 4 * 1024 * 1024  # 4MB分块

with open(path, "wb") as file:
    blob_data = blobclient.download_blob(chunk_size=CHUNK_SIZE)
    for chunk in blob_data.chunks():
        file.write(chunk)

2. 延长请求超时

大文件下载耗时更长,创建客户端时设置更长的超时时间(比如300秒):

from azure.storage.blob import BlobServiceClient

# 初始化BlobServiceClient时设置超时
blob_service_client = BlobServiceClient.from_connection_string(
    conn_str="你的存储账户连接字符串",
    timeout=300
)

blobclient = blob_service_client.get_blob_client(container="容器名称", blob="大文件路径")

with open(path, "wb") as file:
    blob_data = blobclient.download_blob()
    for chunk in blob_data.chunks():
        file.write(chunk)

3. 配置重试策略

网络波动容易中断大文件下载,添加重试策略提升容错性:

from azure.storage.blob import BlobClient
from azure.core.pipeline.policies import RetryPolicy

# 最多重试5次,每次间隔递增
retry_policy = RetryPolicy(max_retries=5, retry_backoff_factor=2)

blobclient = BlobClient.from_connection_string(
    conn_str="你的存储账户连接字符串",
    container_name="容器名称",
    blob_name="大文件路径",
    retry_policy=retry_policy
)

with open(path, "wb") as file:
    blob_data = blobclient.download_blob()
    for chunk in blob_data.chunks():
        file.write(chunk)

4. 升级SDK版本

旧版azure-storage-blob可能存在大文件下载的bug,升级到最新稳定版:

pip install --upgrade azure-storage-blob

5. 排查网络限制

如果在企业内网或受限网络环境下,检查防火墙、代理是否限制了大文件传输,换个网络环境测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:35:29