惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
J
Java Code Geeks
C
Check Point Blog
Last Week in AI
Last Week in AI
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
L
LangChain Blog
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 司徒正美
IT之家
IT之家
Martin Fowler
Martin Fowler
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
U
Unit 42
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ

SegmentFault 最新的问题

哪些办公AI支持移动端远程操控并高效工作? opencode 的/ 命令只能鼠标点击选择不能回车选择吗? 如何在AiPy Skills市场上传自定义Skill? 哪款AI具备丰富的Skills生态以满足多样化工作需求? OpenCode在空目录下运行为何token消耗异常高? 请问下为何可以:使用API中转来大幅降低Claude Code的使用成本? 有哪些AI工具能高效生成长篇小说并避免逻辑断层? 为什么 claude code 桌面版为什么不读取 CLAUDE.md 和 AGENTS.md 这两个文件的内容呢? DeepSeek v4 pro 加到 claude code 桌面版的时候,怎么设置 1M 的上下文啊? 宝塔Linux面板PgSQL导入数据后提示成功但实际未生效? 怎样用AI实现Word/Excel供应商调查表格的自动填充? 为什么js的AES的加密每次得到的结果都不一样,并且无法在后端被java正常解密呢? python中requests.get网址时总是提示请求错误? 我对C语言指针这幅图有疑问,这两个红色框这里是否应该替换为:p 和 pp? 使用 Picgo 的 MinIO 图床上传图片的时候,怎么不要显示 443 端口? 在AiPy中进行vibe coding有哪些实用技巧? Ollama 库中有没有 Whisper 模型? 有什么好用的skills创建的工具? SASE、STNA、容器安全与云安全的前沿研究该去哪些网站找? 腾讯的 codebuddy cn 怎么自定义模型? Ozon的TLS指纹检测如何绕过?Python requests库为何失效? nextjs 路由加载问题? 系统状态从disabled改为enforcing后无法登录该如何修复? AI时代软件测试的发展方向是什么? 使用 codex 的时候,经常出现 reconnecting 是因为自己的网络不好还是 gpt 那边太繁忙了? 如何使用宝塔和MacCMS快速搭建在线影视站点? 命令行设置EULAS_AGREED=1不接受许可,虚拟机为何无法安装? AMH无法安装 Debian 12? Gradle 同步报错:找不到插件 org.gradle.toolchains.foojay-resolver-convention 版本 1.0.0? vscode 安装 codex 插件之后在哪里使用?
Python 中使用代理IP轮换时,如何避免重复使用已失效的代理?
Fluxisp · 2026-04-21 · via SegmentFault 最新的问题
Python 中使用代理IP轮换时,如何避免重复使用已失效的代理? 我在使用 Python 编写爬虫程序时,需要通过代理IP轮换来发起请求。目前我维护了一个代理IP列表,采用简单的轮换策略(如 itertools.cycle 或随机选择)。但遇到以下问题: 某个代理IP失效后,程序仍然会继续使用它,导致重复失败 如何高效地检测并剔除失效代理? 对于大量代理(例如上千个),如何设计一个性能较好的代理池管理方案? 我希望了解一种代理池管理机制,能够 : 自动检测代理是否可用 剔除失效或质量差的代理 对失效代理进行冷却或重试机制(而非直接永久剔除) 运行环境 项目 版本 操作系统 Ubuntu 22.04 Python 3.10+ 依赖库 requests, aiohttp, threading 或 asyncio 当前代码示例 以下是我当前采用的简单轮换实现: import requests from itertools import cycle PROXY_LIST = [ 'http://proxy1:8080', 'http://proxy2:8080', 'http://proxy3:8080', ] def fetch_with_rotation(url: str): proxy_cycle = cycle(PROXY_LIST) for _ in range(len(PROXY_LIST)): proxy = next(proxy_cycle) proxies = {'http': proxy, 'https': proxy} try: response = requests.get(url, proxies=proxies, timeout=5) if response.status_code == 200: return response.text except requests.exceptions.RequestException: continue # 失败就继续尝试下一个 return None result = fetch_with_rotation('https://httpbin.org/ip') print(result) 当前代码的问题: 每次请求都从列表开头轮换,无法记住哪些代理已失效 如果某个代理永久失效,每次轮换到它都会浪费一次请求时间 缺乏对代理质量的评估(如响应速度、成功率) 期望结果 我希望获得一个改进后的代理管理方案,包含以下特性: 代理健康检查:可以定期在后台检测代理可用性(例如每5分钟检测一次) 失效剔除机制:连续失败 N 次后,将该代理移出可用池(或标记为冷却) 代理评分/排序:根据响应时间、成功率等指标,优先使用质量高的代理 线程安全:如果需要在多线程环境中使用,需考虑并发安全 如果能够提供一个完整的代码示例(包含上述特性),将非常有帮助。也可以推荐一些成熟的 Python 代理池库(仅限开源技术方案,不征询商业产品)。