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

如何在代理访问站点失败后重复执行检测?代码问题求助

代理访问失败自动重试的实现方案

原代码问题分析

  • 访问失败后直接切换代理,没有对当前代理进行重试
  • 未处理代理列表索引越界的情况
  • 异常捕获过于宽泛,无法定位具体失败原因
  • 无超时设置,可能导致请求长时间挂起

修改后的实现代码

import requests
from requests.exceptions import RequestException

# 读取代理列表,自动过滤空行和无效内容
with open("valid_proxies.txt", "r") as f:
    proxies = [proxy.strip() for proxy in f.read().splitlines() if proxy.strip()]

sites_to_check = ["https://open.spotify.com/"]
max_retries_per_proxy = 3  # 单个代理最多重试3次
max_proxy_attempts = len(proxies)  # 最多尝试所有代理

for site in sites_to_check:
    proxy_idx = 0
    access_success = False
    
    # 循环尝试代理,直到成功或用完所有代理
    while proxy_idx < max_proxy_attempts and not access_success:
        current_proxy = proxies[proxy_idx]
        proxy_config = {"http": current_proxy, "https": current_proxy}
        
        # 对当前代理进行多次重试
        for try_num in range(1, max_retries_per_proxy + 1):
            try:
                print(f"[{site}] 第{try_num}次尝试 | 代理: {current_proxy}")
                # 设置10秒超时,避免请求卡住
                response = requests.get(site, proxies=proxy_config, timeout=10)
                response.raise_for_status()  # 主动抛出HTTP错误状态码异常
                print(f"✅ 访问成功!状态码: {response.status_code}")
                # print(response.text)  # 按需打印响应内容
                access_success = True
                break
            except RequestException as err:
                print(f"❌ 第{try_num}次失败: {str(err)}")
                # 重试次数耗尽时,切换下一个代理
                if try_num == max_retries_per_proxy:
                    print(f"代理 {current_proxy} 重试次数用完,切换下一个")
        
        proxy_idx += 1
    
    if not access_success:
        print(f"⚠️ 所有代理尝试完毕,无法访问站点: {site}")

关键改进点

  • 单代理重试机制:通过内层循环实现单个代理的多次重试,避免一次失败就直接换代理
  • 精准异常捕获:只捕获RequestException及其子类,能明确区分超时、连接失败、HTTP错误等问题
  • 代理列表预处理:自动过滤空行,避免无效代理导致的错误
  • 超时控制:设置10秒超时,防止请求长时间挂起占用资源
  • 边界安全:通过max_proxy_attempts限制代理尝试数量,避免索引越界
  • 状态标记:用access_success标记访问状态,清晰控制循环逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:02:51