[Errno -3] Temporary failure in name resolution The above exception was the dire...

2026年01月10日 14:49 状态: processing

🚨 错误信息

self.gen.throw(typ, value, traceback) File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.ConnectError: [Errno -3] Temporary failure in name resolution The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/data/lvyibin_project/G-safeguard_me/mas_ta/env/llm_client.py", line 62, in call_llm_api resp = client.chat.completions.create( File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/_utils/_utils.py", line 275, in wrapper return func(*args, **kwargs) File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/resources/chat/completions.py", line 859, in create return self._post( File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/_base_client.py", line 1280, in post return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)) File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/_base_client.py", line 957, in request return self._request( File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/_base_client.py", line 1017, in _request return self._retry_request( File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/_base_client.py", line 1095, in _retry_request return self._request( File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/_base_client.py", line 1017, in _request return self._retry_request( File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/_base_client.py", line 1095, in _retry_request return self._request( File "/home/lvyibin/miniconda3/envs/gsafeguard/lib/python3.10/site-packages/openai/_base_client.py", line 1027, in _request raise APIConnectionError(request=request) from err openai.APIConnectionError: Connection error.

🤖 AI解决方案

错误分析报告

---

1. 错误翻译



原文:httpx.ConnectError: [Errno -3] Temporary failure in name resolution
译文:httpx.ConnectError: [错误号 -3] 名称解析暂时失败


原文:openai.APIConnectionError: Connection error.
译文:openai.APIConnectionError: 连接错误。

---

2. 原因分析


根本原因:DNS解析失败,导致无法建立到OpenAI API服务器的网络连接。

分析

  • 客户端使用 httpx 库尝试连接远程API服务器(OpenAI)。

  • name resolution(域名解析)阶段失败,即DNS服务器无法将API的主机名(例如 api.openai.com)解析为对应的IP地址。

  • 这通常是一个网络环境问题,而非代码逻辑错误。错误最终被封装并向上抛,最终表现为 openai.APIConnectionError
  • 错误发生位置

  • 调用链始于您的 call_llm_api 函数(/data/lvyibin_project/G-safeguard_me/mas_ta/env/llm_client.py 第62行)。

  • 底层网络错误发生在 httpx 库内部(.../httpx/_transports/default.py 第118行)。
  • ---

    3. 解决方案


    这是一个网络问题,需要通过配置或环境检查来解决。

    #### ✅ 立即检查与修复步骤

    第一步:检查网络连通性
    在终端中执行以下命令,检查DNS是否正常工作:

    bash

    1. 测试基础网络连通性


    ping -c 4 8.8.8.8

    2. 测试DNS解析是否正常 (例如解析OpenAI域名)


    nslookup api.openai.com

    或使用


    dig api.openai.com

    3. 如果第二步失败,尝试使用其他DNS服务器(如Google的8.8.8.8)进行解析


    nslookup api.openai.com 8.8.8.8

    第二步:如果DNS解析失败,请采取以下措施之一

    方案A (临时):在代码中指定IP或使用本地hosts文件(不推荐用于生产环境)

  • 仅用于临时测试,找到api.openai.com的可用的IP地址。

  • 将其添加到系统的 /etc/hosts 文件(Linux/macOS)或 C:\Windows\System32\drivers\etc\hosts(Windows)。
  • 方案B (推荐):配置更可靠的DNS服务器

    bash

    对于Linux系统,临时修改DNS服务器


    sudo vim /etc/resolv.conf

    添加或修改 nameserver 为可靠的地址,例如:


    nameserver 8.8.8.8
    nameserver 114.114.114.114

    第三步:检查代理或防火墙设置
    如果您的环境需要代理才能访问外网,请在客户端代码中或环境变量中正确配置代理。

    python

    在您的llm_client.py中创建OpenAI客户端时,可以通过httpx传递代理


    import os
    from openai import OpenAI

    client = OpenAI(
    api_key="your-api-key",
    http_client=httpx.Client(proxy="http://your-proxy-server:port") # 如果需要
    )

    或者,通过环境变量设置全局代理:

    bash

    在运行程序前设置


    export HTTP_PROXY="http://your-proxy-server:port"
    export HTTPS_PROXY="http://your-proxy-server:port"

    ---

    4. ️ 预防措施


  • 增加网络异常处理与重试机制:在调用外部API的代码中,使用 tenacity 等库实现指数退避的重试策略,对 APIConnectionError 等瞬态网络错误进行自动重试。

  • 实现健康检查:在应用启动或定期任务中,加入对关键外部服务(如OpenAI API端点)的网络连通性检查,包括DNS解析、TCP握手等,以便在服务不可用时提前告警或降级处理。

  • 配置备用DNS:在服务器或容器中,始终配置至少两个不同运营商的DNS服务器地址(如一个公共DNS和一个运营商DNS),提高DNS服务的可用性。