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

Python批量POST请求触发ConnectionError(WinError 10048)求助

WinError 10048 问题原因与解决方法

问题原因

Windows系统中,客户端发起TCP连接后,断开连接时套接字会进入TIME_WAIT状态(默认持续240秒),目的是确保网络中残留的数据包被正确处理。你的脚本短时间内发起了24000次POST请求,每次请求都会占用一个本地临时端口,用完后端口无法立即复用。当系统可用的临时端口被耗尽时,新的请求就会触发WinError 10048错误。

另外,当前代码每次调用requests.post()都会新建独立的TCP连接,没有复用连接池,进一步加快了端口占用的速度。

解决方法

1. 复用HTTP连接(推荐)

使用requests.Session()维护连接池,它会复用已建立的TCP连接,大幅减少端口占用。修改后的代码如下:

import requests

url = "http://localhost:3100/api"
payload = "test"

with requests.Session() as session:
    # 40代表两个月的工作日
    for _ in range(40):
        # 每天600条数据
        for _ in range(600):
            session.post(url, data=payload)

2. 添加请求延迟

在每次请求后添加短暂延迟,给系统足够时间回收处于TIME_WAIT状态的端口。示例:

import requests
import time

url = "http://localhost:3100/api"
payload = "test"

with requests.Session() as session:
    for _ in range(40):
        for _ in range(600):
            session.post(url, data=payload)
            time.sleep(0.01)  # 10毫秒延迟,可根据实际情况调整

3. 修改Windows TCP系统参数(进阶)

如果上述方法仍无法满足需求,可以修改系统注册表调整TCP参数:

  • 打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  • 添加或修改以下DWORD值:
    • TcpTimedWaitDelay:设置为30(单位秒,缩短TIME_WAIT时长)
    • MaxUserPort:设置为更大的值(比如65534,扩大临时端口范围)
    • TcpNumConnections:根据需要调大允许的TCP连接数

修改后需要重启系统生效,注意这会影响整个系统的TCP行为,需谨慎操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:45:34