[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 The above exception was the...
🚨 错误信息
Traceback (most recent call last):
  File "D:\anaconda\Lib\site-packages\urllib3\connection.py", line 199, in _new_conn
    sock = connection.create_connection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\urllib3\util\connection.py", line 85, in create_connection
    raise err
  File "D:\anaconda\Lib\site-packages\urllib3\util\connection.py", line 73, in create_connection
    sock.connect(sa)
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "D:\anaconda\Lib\site-packages\urllib3\connectionpool.py", line 789, in urlopen
    response = self._make_request(
               ^^^^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\urllib3\connectionpool.py", line 490, in _make_request
    raise new_e
  File "D:\anaconda\Lib\site-packages\urllib3\connectionpool.py", line 466, in _make_request
    self._validate_conn(conn)
  File "D:\anaconda\Lib\site-packages\urllib3\connectionpool.py", line 1095, in _validate_conn
    conn.connect()
  File "D:\anaconda\Lib\site-packages\urllib3\connection.py", line 693, in connect
    self.sock = sock = self._new_conn()
                       ^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\urllib3\connection.py", line 208, in _new_conn
    raise ConnectTimeoutError(
urllib3.exceptions.ConnectTimeoutError: (<urllib3.connection.HTTPSConnection object at 0x000001CCC1D93E30>, 'Connection to www.dmxapi.cn timed out. (connect timeout=None)')
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "D:\anaconda\Lib\site-packages\requests\adapters.py", line 667, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\urllib3\connectionpool.py", line 843, in urlopen
    retries = retries.increment(
              ^^^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\urllib3\util\retry.py", line 519, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.dmxapi.cn', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x000001CCC1D93E30>, 'Connection to www.dmxapi.cn timed out. (connect timeout=None)'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "c:\Users\1017l\Desktop\prompts\测试.py", line 72, in <module>
    response=reason(prompt,model)
             ^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\1017l\Desktop\prompts\测试.py", line 27, in reason
    response = requests.post(url, headers=headers, data=json.dumps(payload))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\requests\api.py", line 115, in post
    return request("post", url, data=data, json=json, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\requests\api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\requests\sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\requests\sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\anaconda\Lib\site-packages\requests\adapters.py", line 688, in send
    raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='www.dmxapi.cn', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x000001CCC1D93E30>, 'Connection to www.dmxapi.cn timed out. (connect timeout=None)'))
            🤖 AI解决方案
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
ConnectTimeoutError: Connection to www.dmxapi.cn timed out. (connect timeout=None)
原因分析
网络连接超时,客户端无法在指定的时间内连接到目标服务器www.dmxapi.cn:443。
解决方案
方案1:增加超时时间并添加重试机制
import requests
import time
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
def requests_retry_session(
    retries=3,
    backoff_factor=0.3,
    status_forcelist=(500, 502, 504),
    session=None,
):
    session = session or requests.Session()
    retry = Retry(
        total=retries,
        read=retries,
        connect=retries,
        backoff_factor=backoff_factor,
        status_forcelist=status_forcelist,
    )
    adapter = HTTPAdapter(max_retries=retry)
    session.mount('http://', adapter)
    session.mount('https://', adapter)
    return session
# 在原有请求代码中替换
try:
    response = requests_retry_session().post(
        url, 
        headers=headers, 
        data=json.dumps(payload),
        timeout=30  # 设置合理的超时时间
    )
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"请求失败: {e}")
方案2:检查网络连接状态
import socket
def check_connection(host, port=443, timeout=5):
    try:
        socket.create_connection((host, port), timeout=timeout)
        return True
    except socket.error:
        return False
# 在发送请求前检查连接
if check_connection('www.dmxapi.cn'):
    response = requests.post(url, headers=headers, data=json.dumps(payload), timeout=30)
else:
    print("无法连接到目标服务器,请检查网络连接")
预防措施
- 设置合理的超时时间:所有网络请求必须明确设置 
timeout参数 - 实现重试机制:对关键的网络请求添加指数退避的重试逻辑
 - 网络状态检测:在发起请求前先检查目标服务的可达性
 
需要补充的信息:当前网络环境是否正常,目标服务 www.dmxapi.cn 是否可访问。