当前位置:   article > 正文

解决HTTPS连接问题和MaxRetryError的策略_sslerror maxretryerror

sslerror maxretryerror
报错信息:
raise MaxRetryError(_pool, url, error or ResponseError(cause))\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='172.17.0.1', port=443): Max retries exceeded with url: /api/events/rule/?page_size=20&lock_id=140351160399616 (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:877)'),))
原因分析:
    参数 verify=False,同时,requests默认是keep-alive的,可能没有释放,
解决方案:
    加参数
  1. sess = requests.Session()
  2. sess.mount('http://', HTTPAdapter(max_retries=3))
  3. sess.mount('https://', HTTPAdapter(max_retries=3))
  4. sess.keep_alive = False # 关闭多余连接
  5. text = requests.get(self.target_img_url, headers=headers, stream=True, verify=False, timeout=(5,5)) # connect 和 read 二者的 timeout,所以是一个数组
  6. text.close() # 关闭,很重要,确保不要过多的链接
从给出的报错信息来看,问题出现在尝试通过HTTPS连接到某个服务器时,超过了最大重试次数,导致`MaxRetryError`。

报错信息中还提到了`SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:877)')`,这通常意味着在SSL/TLS握手过程中出现了问题,可能是由于服务器端意外关闭了连接,或者客户端和服务器之间的SSL/TLS协议版本不匹配。

关于你给出的解决方案,我会逐一分析:

1. **参数 verify=False**:
当使用`verify=False`时,requests不要验证SSL证书。这可能会使连接容易受到中间人攻击,所以通常不推荐这样做,除非完全信任目标服务器并且了解潜在的安全风险。
2. **requests默认是keep-alive的**:
是的,requests默认使用keep-alive来复用连接,这有助于提高性能和减少资源消耗。但有时,如果之前的请求未能正确关闭,可能会导致资源泄露或与服务器建立过多连接。
3. **解决方案中的代码**:


   * 使用`requests.Session()`创建了一个会话。会话有助于管理HTTP连接,特别是当你想复用连接时。
   * 使用`HTTPAdapter(max_retries=3)`设置了最大重试次数为3。这确保了当与服务器通信出现问题时,requests会尝试重新连接。
   * `sess.keep_alive = False`确保了即使使用了会话,也不会保持多余的连接。这在某些情况下可能是必要的,特别是当服务器或网络环境不稳定时。
   * `text = requests.get(...)`:这里设置了多个参数,包括`verify=False`、`stream=True`等。这些参数会影响请求的行为。
   * `text.close()`:确保请求完成后关闭响应对象。这是一个好习惯,可以确保及时释放资源。

**举例说明**:
假设你有一个Web应用,该应用通过HTTPS提供服务。用户A通过requests库发起请求,但由于某种原因(如网络波动、服务器故障等),请求未能成功完成。如果A没有正确处理异常或重试机制,可能会立即重试请求。但由于SSL握手失败或其他原因,重试也可能会失败。随着越来越多的用户(B、C、D...)尝试访问该服务,但由于相同的原因失败,最终可能会导致MaxRetryError。

解决方案中的代码通过设置最大重试次数、关闭不必要的连接以及对SSL证书的验证来尝试解决这些问题。

总之,你的解决方案提供了一种处理这种问题的策略,但确保始终考虑到安全性和资源管理的最佳实践。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号