HTTPSConnectionPool(host='www.dmxapi.cn', port=443): Max retries exceeded with u...

2026年01月05日 13:27 状态: processing

🚨 错误信息

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='www.dmxapi.cn', port=443): Max retries exceeded with url: /v1/query/video_generation?task_id=352405476393399 (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x04DD06D0>: Failed to resolve 'www.dmxapi.cn' ([Errno 11001] getaddrinfo failed)"))

🤖 AI解决方案

报错分析报告

1. 错误翻译



原文:NameResolutionError(": Failed to resolve 'www.dmxapi.cn' ([Errno 11001] getaddrinfo failed)")
译文:域名解析错误:"无法解析 'www.dmxapi.cn' 域名([错误号11001] getaddrinfo调用失败)"

2. 原因分析


  • 根本原因:DNS解析失败,无法将域名 www.dmxapi.cn 转换为IP地址

  • 具体位置:Python的requests库尝试连接 https://www.dmxapi.cn:443

  • 错误上下文:urllib3库在建立HTTPS连接前,进行域名解析时失败
  • 3. 解决方案

    方案一:临时修复(添加重试机制)


    python
    import requests
    from requests.adapters import HTTPAdapter
    from urllib3.util.retry import Retry

    创建带重试机制的session


    session = requests.Session()
    retry_strategy = Retry(
    total=3, # 总重试次数
    backoff_factor=1, # 重试间隔
    status_forcelist=[429, 500, 502, 503, 504], # 重试状态码
    allowed_methods=["GET", "POST"] # 允许重试的方法
    )
    adapter = HTTPAdapter(max_retries=retry_strategy)
    session.mount("http://", adapter)
    session.mount("https://", adapter)

    try:
    response = session.get(
    "https://www.dmxapi.cn/v1/query/video_generation?task_id=352405476393399",
    timeout=10 # 设置超时时间
    )
    response.raise_for_status()
    print("请求成功:", response.json())
    except requests.exceptions.RequestException as e:
    print(f"请求失败: {e}")

    方案二:检查网络连接和DNS


    python
    import socket
    import requests

    1. 检查域名是否能解析


    try:
    ip_address = socket.gethostbyname("www.dmxapi.cn")
    print(f"域名解析成功,IP地址: {ip_address}")

    # 2. 直接使用IP地址访问(如果API支持)
    # 注意:如果API使用了SNI,可能无法直接通过IP访问
    headers = {'Host': 'www.dmxapi.cn'}
    response = requests.get(
    f"https://{ip_address}/v1/query/video_generation?task_id=352405476393399",
    headers=headers,
    verify=False # 注意安全风险
    )

    except socket.gaierror:
    print("域名解析失败,请检查:")
    print("1. 网络连接是否正常")
    print("2. DNS服务器配置是否正确")
    print("3. 防火墙是否阻止了DNS查询")

    4. ️ 预防措施

    最佳实践建议:


  • 添加网络异常处理:所有网络请求都应包含完善的异常处理机制

  • python
    try:
    response = requests.get(url, timeout=10)
    except requests.exceptions.Timeout:
    print("请求超时")
    except requests.exceptions.ConnectionError:
    print("连接错误,请检查网络")
    except Exception as e:
    print(f"其他错误: {e}")

  • 配置备用DNS:在系统级别或代码级别配置备用DNS解析

  • python
    import os
    # 设置自定义DNS解析(在无法修改系统DNS时)
    # 注意:这种方法有局限性,最好在操作系统层面配置
    os.environ['REQUESTS_CA_BUNDLE'] = '/path/to/certificate.pem'

    ️ 推荐工具:


  • ping命令:检查基础网络连通性

  • nslookup/dig命令:测试DNS解析

  • curl命令:测试API端点可用性

  • requests-mock库:用于单元测试,模拟网络错误场景
  • ---

    提示:如果问题持续存在,请联系您的网络管理员检查DNS服务器配置或网络代理设置。