Python requests库如何取消超时限制,持续等待慢速站点返回响应?
解决requests向慢网站发请求超时问题的方案
核心逻辑
requests库默认不会主动触发超时,只有当你显式设置了timeout参数时,才会在超过指定时间未收到响应时抛出超时异常。遇到该问题首先检查你的代码是否配置了过短的超时时间。
具体操作方法
- 第一步:移除请求中的
timeout参数配置
错误示例(设置了10秒超时,响应慢就会报错):
修正后写法(无主动超时限制,会一直等待服务端返回响应):import requests res = requests.get("https://你的目标网站地址", timeout=10)import requests res = requests.get("https://你的目标网站地址") - 第二步:处理底层系统连接超时场景
如果移除timeout参数后仍然出现超时报错,一般是操作系统层面的TCP默认连接超时限制导致的,可以加自动重试逻辑解决,示例如下:import requests import time from requests.exceptions import RequestException while True: try: resp = requests.get("https://你的目标网站地址") # 确认返回有效响应后跳出循环,可根据业务调整校验规则 if resp.status_code == 200: break except RequestException: # 遇到异常等待3秒后重试,避免频繁请求触发反爬 time.sleep(3)
注意事项
- 永久等待可能导致进程长时间阻塞,建议结合业务场景设置一个足够长的超时阈值,例如
timeout=3600(1小时超时),避免极端情况进程永久挂死。 - 如果网站存在反爬策略,长时间等待可能被服务端主动断开连接,可以在请求中添加合理的
User-Agent、Cookie等参数模拟正常浏览器请求。
内容的提问来源于stack exchange,提问作者cloudflare
相关产品推荐
相关产品推荐

