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

requests.get方法递归错误问题求助(Python3.8.10环境)

Python 3.8.10下requests.get触发递归错误的解决方法

问题描述

使用Python 3.8.10版本,此前requests.get运行正常,现在调用时出现递归错误,测试代码及完整错误信息如下:

测试代码

x = requests.get('https://w3schools.com', timeout=10)
print(x.status_code)

错误信息

File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/root/api-server/server/rest.py", line 141, in getprice
    data = General().getprice()
  File "/usr/local/lib/python3.8/dist-packages/flask_caching/__init__.py", line 795, in decorated_function
    rv = f(*args, **kwargs)
  File "/root/api-server/server/methods/general.py", line 41, in getprice
    result = utils.getprice()
  File "/root/api-server/server/utils.py", line 180, in getprice
    x = requests.get('https://api.widecoin.org/info', timeout=10)
  File "/usr/local/lib/python3.8/dist-packages/requests/api.py", line 76, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 643, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 376, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 994, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.8/dist-packages/urllib3/connection.py", line 368, in connect
    self.ssl_context = create_urllib3_context(
  File "/usr/local/lib/python3.8/dist-packages/urllib3/util/ssl_.py", line 273, in create_urllib3_context
    context.options |= options
  File "/usr/lib/python3.8/ssl.py", line 602, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  File "/usr/lib/python3.8/ssl.py", line 602, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  File "/usr/lib/python3.8/ssl.py", line 602, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  [Previous line repeated 476 more times]
RecursionError: maximum recursion depth exceeded

问题原因

该错误是Python标准库ssl.py中SSLContext.options属性的setter方法触发无限递归导致的,通常由以下原因引起:

  • urllib3/requests版本与Python 3.8存在兼容性冲突
  • Python的ssl模块文件损坏或被第三方库篡改
  • 依赖包版本不匹配引发的属性重载异常

解决步骤

1. 升级依赖包到兼容版本

执行以下命令升级requests和urllib3,确保版本与Python 3.8兼容:

pip install --upgrade requests urllib3

2. 验证SSL模块完整性

运行以下代码测试ssl模块是否正常工作:

import ssl
ctx = ssl.create_default_context()
ctx.options |= ssl.OP_NO_SSLv3
print(ctx.options)

如果这段代码同样触发递归错误,说明Python的ssl模块已损坏,需要重新安装Python 3.8.10。

3. 排查第三方库干扰

检查近期安装的新Python包,尤其是涉及SSL、网络安全类的库,尝试临时卸载这些包后测试requests.get是否恢复正常,定位出干扰源。

4. 自定义SSL适配器绕过自动上下文创建(临时方案)

如果上述方法无效,可以通过自定义HTTP适配器手动创建SSL上下文,避免urllib3的自动逻辑触发递归:

import requests
import ssl
from urllib3.poolmanager import PoolManager

class CustomSSLAdapter(requests.adapters.HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        ctx = ssl.create_default_context()
        # 生产环境建议保留证书验证,此处为测试示例
        ctx.check_hostname = False
        ctx.verify_mode = ssl.CERT_NONE
        self.poolmanager = PoolManager(
            num_pools=connections,
            maxsize=maxsize,
            block=block,
            ssl_context=ctx
        )

# 使用自定义适配器发送请求
session = requests.Session()
session.mount('https://', CustomSSLAdapter())
response = session.get('https://w3schools.com', timeout=10)
print(response.status_code)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:30:32