| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> python https RecursionError详解 -> 正文阅读 |
|
[网络协议]python https RecursionError详解 |
RecursionError: maximum recursion depth exceeded while calling a Python object File "/root/miniconda3/envs/devops/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen httplib_response = self._make_request( File "/root/miniconda3/envs/devops/lib/python3.8/site-packages/urllib3/connectionpool.py", line 382, in _make_request self._validate_conn(conn) File "/root/miniconda3/envs/devops/lib/python3.8/site-packages/urllib3/connectionpool.py", line 1010, in _validate_conn conn.connect() File "/root/miniconda3/envs/devops/lib/python3.8/site-packages/urllib3/connection.py", line 392, in connect self.ssl_context = create_urllib3_context( File "/root/miniconda3/envs/devops/lib/python3.8/site-packages/urllib3/util/ssl_.py", line 312, in create_urllib3_context context.options |= options File "/root/miniconda3/envs/devops/lib/python3.8/ssl.py", line 602, in options super(SSLContext, SSLContext).options.__set__(self, value) File "/root/miniconda3/envs/devops/lib/python3.8/ssl.py", line 602, in options super(SSLContext, SSLContext).options.__set__(self, value) File "/root/miniconda3/envs/devops/lib/python3.8/ssl.py", line 602, in options super(SSLContext, SSLContext).options.__set__(self, value) [Previous line repeated 468 more times] RecursionError: maximum recursion depth exceeded while calling a Python object 注意看上面特殊颜色标注的内容,表示超过了468的深度。 问题原因:1)代码问题,逻辑编写错误导致了递归溢出,比如代码小白,写个递归死循环了。这种情况不适用本篇文章。 2) 代码太庞大了,调用深度太深! 问题翻译解释: 超过最大递归深度,当然这个只是字面意思。其实是可以复现这个问题的 问题深度解析:python有调用深度控制,默认是1000,我们可以通过sys.setrecursionlimit(N)来设置调用深度为N;报错的意思虽然是说递归深度超过限制,但不要局限于递归问题,其实也是调用堆栈的问题,涉及到C的一些基础.... 比如以下代码,设置递归深度为20时,会报错RecursionError,然后改成21便可以正常结束。这里如果不调用traceback函数,其实只需要设置成8就足够了。
运行结果如下: 正常的输出结果如下:
解决方案:如果看懂了解析,就明白了为什么会报错RecursionError,一般用开源的项目,或者项目架构的过深,就会导致层层套娃。 #设置递归深度为很大很大,比如设置成10000。正常的程序架构都不会调用深度超过10000 不要设置太大!这个机制是为了避免真的出现代码逻辑问题时,无限的递归死循环导致OOM系统崩溃。内存CPU打爆=>会出现什么结果? 嗯,很卡,然后你logout一下就登不进去了,然后就哦豁挂了,,,
django项目只需要在manage.py的上面设置这个就可以了 至于网上说这个是临时解决的方案,其实就是永久方案.,大部分文章是抄袭之后知其然不知其所以然,所以觉得没有永久解决问题。 常见发生的库有哪些与https有关的模块,真的很深.... boto3 玩转 amazon 就几百层。然后钉钉关联的模块,但凡用到https的,很多会调用到ssl模块,也很深 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:36:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |