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

如何从Azure Blob容器快速下载CSV指定的百万级文件?

快速批量下载Azure Blob中指定文件的优化方案

针对你要下载3百万个无规整路径Blob的场景,以下是比现有方案更快的实现方式:

1. 使用Azcopy批量下载(首选)

Azcopy是微软官方专为Azure存储优化的传输工具,内置了并发调度、断点续传、网络自适应等机制,性能远优于自行编写的Python脚本。

  • 操作步骤:
    1. 将CSV中的Blob路径整理为每行一个路径的文本文件(确保路径是Blob的相对路径,不含容器名)
    2. 生成容器级SAS令牌(比单个Blob SAS更高效,避免重复生成开销)
    3. 执行下载命令:
      azcopy copy "https://<storage-account>.blob.core.windows.net/<container>" "<本地目标目录>" --list-of-files "<你的路径列表文件路径>" --sas-token "<容器级SAS>"
      
  • 优势:自动优化并发数、处理网络波动、支持增量下载,单进程就能榨干带宽,无需手动维护线程/进程池。

2. 多进程+异步HTTP请求(替代方案)

Python的多线程受GIL限制,无法充分利用CPU和网络资源,改用多进程+异步IO能大幅提升并发量:

  • 用multiprocessing将CSV文件拆分为多个子批次,每个进程独立处理一个批次
  • 每个进程内使用aiohttp发起异步HTTP请求,替代requests的同步请求
  • 提前生成容器级SAS,每个请求直接拼接SAS令牌,避免单个Blob SAS的生成开销

3. 异步Azure Blob SDK优化

如果你倾向于用SDK而非第三方工具,试试异步版本的Azure Blob SDK:

  • 安装异步包:pip install azure-storage-blob[aio]
  • 用asyncio构建高并发任务队列,批量发起异步下载请求
  • 配合容器级SAS或服务主体认证,减少单个请求的权限验证耗时

额外优化点

  • 同区域部署:确保虚拟机和存储账户在同一Azure区域,使用内网传输(无需公网带宽费用,延迟更低)
  • 本地存储优化:目标目录挂载SSD,避免磁盘IO成为下载瓶颈
  • 并发数调优:根据虚拟机CPU/内存和存储账户限额调整并发数(Azcopy会自动调整,自行编写脚本建议从100-200并发开始测试)
  • 禁用代理:确保虚拟机未启用HTTP代理,避免额外延迟

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:20:20