[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 The above exception was the...

2025年11月03日 18:15 响应: 17.94秒 状态: success

🚨 错误信息

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 是否可访问。