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

使用CDS API自动下载CMIP6多模型数据时循环执行失败求助

CMIP6数据循环下载连接错误解决方法

问题描述

通过Python的cdsapi工具从CMIP6气候预测数据集下载数据时,单独指定单个模型可正常完成下载,但使用列表循环批量调用时出现连接错误,控制台提示无法解析服务器域名、无法建立新连接。

报错分析

报错信息中的getaddrinfo failed属于DNS解析失败,无法识别目标服务器域名。结合场景判断,主要可能是以下原因:

  • 短时间内连续发起请求,触发了Copernicus服务器的访问限制
  • 多次下载共用同一个文件名download.zip,导致文件被占用或覆盖,间接引发连接异常
  • 本地网络DNS解析不稳定,批量请求时出现解析失败

解决方案

针对上述问题,可通过以下修改解决:

  1. 为每个模型设置独立下载文件名
    避免重复文件名导致的文件冲突或锁定问题,每个模型的下载文件单独命名。

  2. 添加请求间隔
    在循环中增加延迟,避免短时间内连续请求触发服务器限制。

  3. 循环内重新初始化Client(可选)
    若原连接池存在状态异常,每次循环重新初始化Client可保证请求连接状态正常。

修改后的代码

import cdsapi
import time

# 定义待下载的模型列表
models = ['cnrm_cm6_1', 'cmcc_cm2_sr5']

for model_name in models:
    # 每次循环初始化Client,避免连接池异常
    c = cdsapi.Client()
    print(f"开始下载模型 {model_name} 的数据...")
    c.retrieve(
        'projections-cmip6',
        {
            'format': 'zip',
            'experiment': 'historical',
            'temporal_resolution': 'monthly',
            'variable': 'precipitation',
            'model': model_name,
            'year': '2010',
            'month': '01',
            'area': [-2, 29, -3, 30],
        },
        # 为每个模型生成独立文件名
        f'download_{model_name}.zip'
    )
    # 添加60秒延迟,避免请求过于频繁
    time.sleep(60)

额外排查建议

  • 检查本地网络稳定性,尝试切换到更稳定的网络环境
  • 手动测试能否访问目标服务器域名,确认DNS解析正常
  • 若仍有问题,可在初始化Client时设置更长超时参数,比如c = cdsapi.Client(timeout=300)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:30:42