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

Python多线程调用requests请求站点出现Connection Aborted错误如何解决

问题根源

ConnectionResetError(104, 'Connection reset by peer')报错和部分站点无返回,主要由以下几个原因导致:

  • 原代码的域名列表存在语法错误:www.ottenandpartners.co.za后缺少逗号,和下一行的www.carteplastique.fr拼接成了一个无效域名
  • 仅尝试http协议请求,很多站点仅开放https端口,请求http会直接被服务端断开连接
  • 未设置请求超时,网络不通时会长时间卡住甚至报错
  • 未做异常捕获,单个请求出错直接导致线程崩溃
  • 无并发控制,同时发起十几个请求很容易触发服务端限流或本地网络限制,导致连接被重置
修复后可直接运行的代码
import threading
import requests
from queue import Queue

# 修复了原列表的逗号缺失问题
domain_list = [
    "balajidurgaceramics.com",
    "km-associates.in",
    "www.auifs.org",
    "www.cadetcarebd.com",
    "thaygiaoquocdan.vn",
    "plastimedicos.com",
    "www.styleprojectss.com",
    "www.matricjackets.com",
    "www.ottenandpartners.co.za",
    "www.carteplastique.fr",
    "hellocodersabbir.com",
    "playrifa.com",
    "amedgroup.net",
    "alphatechservices.org.in",
    "aaqildental.com",
    "montessoriassociation.org.ua",
    "amorehairandbeauty.co.u"
]

# 并发线程数,可根据自身网络情况调整,不要设置过高
THREAD_NUM = 3
q = Queue()

def test():
    while not q.empty():
        domain = q.get()
        access_url = None
        # 先试http,失败自动尝试https
        for protocol in ["http://", "https://"]:
            try:
                # 超时设置为5秒,可自行调整
                resp = requests.get(protocol + domain, timeout=5, allow_redirects=True)
                if resp.status_code < 400:
                    access_url = resp.url
                    break
            except Exception:
                continue
        # 输出结果,无法访问的站点会做统一标注
        print(f"{domain}: {access_url if access_url else '无法通过http/https访问'}")
        q.task_done()

if __name__ == "__main__":
    # 所有域名加入任务队列
    for d in domain_list:
        q.put(d)
    # 启动指定数量的工作线程
    for _ in range(THREAD_NUM):
        t = threading.Thread(target=test, daemon=True)
        t.start()
    # 等待所有任务执行完成
    q.join()
核心优化说明
  • 用队列控制并发数,避免短时间发起大量请求导致连接被重置
  • 增加双协议尝试逻辑,http访问失败自动降级到https
  • 统一捕获所有请求异常,单个站点访问失败不会影响其他任务执行
  • 增加超时限制,避免无意义的长时间等待
  • 输出结果和域名绑定,不会出现结果和域名对应不上的问题
  • 修复了原列表的语法错误,避免无效域名导致的报错
  • 替换了原代码中用关键字list做变量名的错误写法,避免语法隐患

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:21:03