python k8s库,read_namespaced_config_map:maximum recursion depth exceeded

news2024/12/25 1:09:44

使用背景

在python中,调用了gevent库,同时引用了官方的k8s库接口:

GitHub - kubernetes-client/python: Official Python client library for kubernetesOfficial Python client library for kubernetes. Contribute to kubernetes-client/python development by creating an account on GitHub.https://github.com/kubernetes-client/python调用read_namespaced_config_map时报出异常:

maximum recursion depth exceeded
maximum recursion depth exceeded while calling a Python object

并且是偶现问题,感觉比较奇怪,因为我没有使用过递归,官方库里应该也不会出这么低级的问题,于是输出堆栈信息看一下:

File "/opt/pgpool/agent/k8sClient.py", line 151, in read_secrets
    return self._k8s_core_api.read_namespaced_secret(name, self._namespace)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/kubernetes/client/api/core_v1_api.py", line 24803, in read_namespaced_secret
    return self.read_namespaced_secret_with_http_info(name, namespace, **kwargs)  # noqa: E501
  File "/opt/pgpool/.local/lib/python3.7/site-packages/kubernetes/client/api/core_v1_api.py", line 24904, in read_namespaced_secret_with_http_info
    collection_formats=collection_formats)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/kubernetes/client/api_client.py", line 353, in call_api
    _preload_content, _request_timeout, _host)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/kubernetes/client/api_client.py", line 184, in __call_api
    _request_timeout=_request_timeout)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/kubernetes/client/api_client.py", line 377, in request
    headers=headers)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/kubernetes/client/rest.py", line 245, in GET
    query_params=query_params)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/kubernetes/client/rest.py", line 218, in request
    headers=headers)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/urllib3/request.py", line 75, in request
    method, url, fields=fields, headers=headers, **urlopen_kw
  File "/opt/pgpool/.local/lib/python3.7/site-packages/urllib3/request.py", line 96, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/urllib3/poolmanager.py", line 376, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 710, in urlopen
    chunked=chunked,
  File "/opt/pgpool/.local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 386, in _make_request
    self._validate_conn(conn)
  File "/opt/pgpool/.local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 1042, in _validate_conn
    conn.connect()
  File "/opt/pgpool/.local/lib/python3.7/site-packages/urllib3/connection.py", line 397, in connect
    cert_reqs=resolve_cert_reqs(self.cert_reqs),
  File "/opt/pgpool/.local/lib/python3.7/site-packages/urllib3/util/ssl_.py", line 312, in create_urllib3_context
    context.options |= options
  File "/usr/lib/python3.7/ssl.py", line 507, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  File "/usr/lib/python3.7/ssl.py", line 507, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  File "/usr/lib/python3.7/ssl.py", line 507, in options
    super(SSLContext, SSLContext).options.__set__(self, value)

发现最后一直卡死在super(SSLContext, SSLContext).options.__set__(self, value)

 

解决方式

在网上发现了大量的类似报错,看来不是k8s库的原因。

解决方式调研:

python - "RecursionError: maximum recursion depth exceeded" from ssl.py: `super(SSLContext, SSLContext).options.__set__(self, value)` - Stack Overflow

python - Maximum recursion depth exceeded on SSLContext (eventlet, flask, flask-socketio, tweepy) - Stack Overflow

发现我的问题很可能是因为引用k8s库在引用gavent库之前。

于是按照他们的解决思路:

  1. 将引用gavent库放在程序最开头位置
  2. 将monkey.patch_all()放在最开头

 

 

再次尝试调用read_namespaced_config_map时,不再报错。

解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js安装配置及Angular CLI的安装

NodeJS的安装node.js官网下载地址: https://nodejs.org/en/download/在node.js的官网上面下载适合自己机型的,如果是Windows系统的话,建议下载对应的 Windows Installer (.msi) 。下载完成后,双击打开安装,安装路径最好自定义&…

Melis4.0[D1s]:1.启动流程(与adc按键初始化相关部分)跟踪笔记

文章目录1.启动流程1.1 最先进入的文件:head_s.S1.2 start_kernel()函数所在的文件:init.c1.3 input_init()函数所在文件:sys_input.c1.4 INPUT_LKeyDevInit()所在文件:keyboarddev.c1.5 esINPUT_RegLdev()所在文件:in…

LVS负载均衡

文章目录前言一、LVS模式-DR二、ipvsadm配置参数三、DR模式的部署server1:调度器(VS)server2:真实服务器(RS)server3:真实服务器(RS)真实服务器(server2和server3)屏蔽客户端测试:纯代码步骤演示…

SpringCloud保姆级搭建教程六---ElasticSearch

es下载地址:https://www.elastic.co/cn/downloads/elasticsearch 最新版本或者 https://github.com/elastic/elasticsearch 7.17.9kibana下载地址:https://github.com/elastic/kibana 各个版本jdk8 对应的es应该是7.*版本,最新的es应该对应的…

【论文及代码详解】BEIT: BERT Pre-Training of Image Transformers

记录下论文《BEIT: BERT Pre-Training of Image Transformers》,这是一篇将Transformer应用于图像领域,并使用自监督方法进行参数初始化的文章。 论文链接 整体概要 由于网络整体流程图没有标注好模型的运行过程,结合论文的描述&#xff1a…

收藏,核心期刊的投稿、审稿、出刊流程详解

学术期刊论文(核心和普刊)的发表流程总的来说其实是一样的,整个流程包括:1写作-2选择刊物-3投稿-4审稿-5返修或拒稿-6录用-7出刊-8上网检索。 其中1和2其实顺序是可以调换的,可以选择好刊物再写作,根据刊物…

麦克风阵列波束基本概念理解

波束形成 本质上是设计合适的滤波器,对于一类固定滤波器系数的阵列来说,无论输入信号或者噪声信号的统计特征如何,其滤波器系数固定不变,此类波束形成叫Fixed Beamforming,固定波束形成好比传统数字信号处理里面的经典…

TCP并发服务器(多进程与多线程)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 TCP并发服务器(多进程与多线程)1. 多进程并发服务器(1)…

NPDP认证|2023年,0基础转行产品经理可以吗?

2023年,告别了疫情,各个行业正在快速回暖,很多企业都在高薪招聘产品经理岗位,这让很多其他岗位的朋友也想转行做产品经理,那没有基础,没有经验能转行做产品经理吗? 0基础转行产品经理是可能的&a…

Redis 删除策略

过期数据Redis中的数据特征 Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态XX :具有时效性的数据-1 :永久有效的数据-2 :已经过期的数据 或 被删除的数据 或 未定义的数据数…

Windows出现0xc00d36e5错误怎么办?

当我们使用Windows Media Player来播放视频文件时,可能会出现无法播放,并显示0xc00d36e5错误代码。该错误可能是因为Windows Media Player不支持视频格式、注册表项损坏、系统配置问题、第三方应用程序冲突等。下面将开始介绍0xc00d36e5错误的解决方法&a…

K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示

K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:数据对比:四、部分代码说明1、接线引脚定义1.1、STC89C52RCS12SD紫外线传感器模块1.2、STM32F103…

【数据结构】P0 三要素与五个特征

三要素与五个特征什么是数据结构数据结构的三要素逻辑结构存储结构数据的运算算法的五个特征时间复杂度什么是数据结构 数据元素之间存在着一种或者多种关系,这种关系称为结构。 数据结构的三要素 数据结构的三要素:逻辑结构、存储结构、数据的运算。 …

【面试题】手写防抖和节流

1. 手写防抖 debounce 首先介绍一个防抖的应用场景。假如需要监听一个输入框在输入文字后触发的change事件,那么通过keyup事件,每次输入文字后都会触发change事件,频繁触发的情况会影响系统的性能。因此可以使用防抖来降低触发频率&#xff…

flutter系列之:在flutter中使用导航Navigator

文章目录简介flutter中的NavigatorNavigator的使用总结简介 一个APP如果没有页面跳转那么是没有灵魂的,页面跳转的一个常用说法就是Navigator,flutter作为一个最为优秀的前端框架,Navigator肯定是必不可少的,那么在flutter中如何使用Navigat…

自建Git服务器

Gitea - Git with a cup of tea是一个国外团队基于国内一位大牛写的gogs开源项目(Go语言开发)二次开发的轻量Git社区,其稳定性非常好,而且是非常轻量级在个人亲测在1核1G的centos7主机上1个月不重启依然稳定运行,引用g…

chatgpt怎么去玩?解析各种用途和强大的功能

关于chatgpt怎么玩?他的一些原理以及玩法,相信大家都是挺好奇的吧,毕竟这个新的人工智能和以往我们玩过的,是完全不一样的,它具备更多的可玩性,而且具备有一定的学习能力,这就造就了它的强大&am…

记一次IDE的Docker插件实战(Dockfile篇)

IDEA下使用Docker插件制作镜像、推送及运行 前言 本部分主要根据IDEA的Docker插件实战(Dockerfile篇)_程序员欣宸的博客-CSDN博客_idea编写dockerfile一文所述内容进行实践,并对其中遇到的问题进行解答,从而串接多个知识点。 如何编写Dockfile 在Int…

【elasticsearch】elasticsearch es读写原理

一、前言: 今天来学习下 es 的写入原理。 Elasticsearch底层使用Lucene来实现doc的读写操作: Luence 存在的问题: 没有并发设计 lucene只是一个搜索引擎库,并没有涉及到分布式相关的设计,因此要想使用Lucene来处理海量…

「可信计算」与软件行为学

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…