You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinError 10060问题咨询:Python线程调用API是否会引发该错误?

WinError 10060 问题分析与解决方案

原因

  1. Windows TIME_WAIT 连接堆积:每次API请求新建TCP连接后,关闭时会进入TIME_WAIT状态(Windows默认保持240秒),高频率线程请求下,可用端口快速耗尽,新连接无法建立导致超时。
  2. Windows线程调度特性:Windows的线程调度优先级机制可能导致部分请求的等待时间被意外拉长,超过API的响应超时阈值,触发10060错误。
  3. TCP/IP栈参数保守限制:Windows默认的并发连接数、端口范围、重试次数等参数比Linux更保守,高频率请求场景下更容易触发连接超时。

解决方案

1. 复用HTTP连接

避免每次请求新建连接,用requests.Session()(线程安全需加锁)复用连接,减少TIME_WAIT堆积:

import requests
from threading import Lock

# 全局共享Session,加锁保证线程安全
session = requests.Session()
session_lock = Lock()

def fetch_api_data(api_url):
    with session_lock:
        try:
            # 设置连接超时3秒,读取超时10秒
            resp = session.get(api_url, timeout=(3, 10))
            resp.raise_for_status()
            return resp.json()
        except requests.exceptions.RequestException as e:
            print(f"请求失败: {str(e)}")
            return None

2. 调整Windows套接字参数(需管理员权限)

修改TCP参数减少TIME_WAIT时间、扩大端口范围:

  • 打开管理员命令提示符,执行以下命令:
    netsh int tcp set global autotuninglevel=normal
    netsh int tcp set global timestamps=enabled
    netsh int ipv4 set dynamicport tcp start=1024 num=64511
    
  • 或者修改注册表(路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters):
    • 添加TcpTimedWaitDelay(DWORD值,设为30,单位秒)
    • 添加MaxUserPort(DWORD值,设为65534)
      修改后重启电脑生效。

3. 优化线程池与重试机制

用线程池控制并发数,避免无限制创建线程;同时添加指数退避重试,应对临时超时:

from concurrent.futures import ThreadPoolExecutor
import time

def fetch_with_retry(api_url, max_retries=3):
    for retry in range(max_retries):
        data = fetch_api_data(api_url)
        if data:
            return data
        # 指数退避等待,避免短时间重复请求
        time.sleep(2 ** retry)
    return None

# 控制并发线程数,建议根据API限制调整(比如20-50)
with ThreadPoolExecutor(max_workers=30) as executor:
    target_urls = ["https://your-api-endpoint.com/data"] * 1000
    results = list(executor.map(fetch_with_retry, target_urls))

4. 监控套接字状态

用netstat -ano | findstr TIME_WAIT命令查看TIME_WAIT状态的连接数,如果数量超过几千,说明连接复用未生效,需优先优化连接复用逻辑。

内容的提问来源于stack exchange,提问作者saga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 02:55:13