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("<urllib3.connection.HTTPSConnection object at 0x04DD06D0>: 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. 解决方案

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


    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


    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. ️ 预防措施

    最佳实践建议:


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

  •    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解析

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

      ️ 推荐工具:


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

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

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

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

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