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

获取Azure Blob容器内Blob数量时遇InvalidChunkLength错误求助

解决Azure Blob容器Blob数量统计时的InvalidChunkLength错误

这个错误本质是HTTP连接在流式获取Blob列表时意外中断,通常和网络不稳定、请求超时或Blob数量过大导致的长连接维持失败有关。以下是具体解决方法:

1. 配置请求超时与重试策略

给ContainerClient添加超时设置,并启用重试机制,应对临时网络波动:

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

sas_uri = "*************************"

# 配置重试策略:最多重试3次,每次间隔递增
retry_policy = RetryPolicy(max_retries=3, retry_backoff_factor=1)
# 创建带超时和重试的ContainerClient
container_client = ContainerClient.from_container_url(
    sas_uri,
    retry_policy=retry_policy,
    timeout=30  # 单次请求超时时间(秒)
)

blobs_count = sum(1 for _ in container_client.list_blobs())
print("Number of blobs in the container:", blobs_count)

2. 分页遍历Blob列表

当容器内Blob数量极大时,一次性流式遍历容易断开连接,改用分页方式逐步获取:

from azure.storage.blob import ContainerClient

sas_uri = "*************************"
container_client = ContainerClient.from_container_url(sas_uri)

blobs_count = 0
# 分页获取,每页最多返回5000个Blob(Azure默认最大值)
page_iterator = container_client.list_blobs(results_per_page=5000)
for page in page_iterator:
    blobs_count += len(list(page))

print("Number of blobs in the container:", blobs_count)

3. 基础排查项

  • 确认当前网络稳定,无防火墙或代理拦截Azure存储服务请求
  • 验证SAS URI包含list权限(SAS token需带l标识才能列出Blob)
  • 检查SAS URI是否已过期

4. 升级Azure存储SDK

旧版本SDK可能存在连接管理bug,执行命令升级到最新版:

pip install --upgrade azure-storage-blob

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:52:07