今天在生产系统中查询产品时,莫名提示错误:maximum recursion depth exceeded while calling a Python object,根据错误日志提示,发现在查询产品时,系统会构造一个domain,查询所有库位的库存量。当仓库较多的时候,构造的这个domain比较长,然后解析这个domain的方法distribute_negate是递归调用,因为递归次数太多,所以就提示错误。
根据源码查看了生成domain的条件,这个部分不太好调整,所以后来直接找了个方法来增加递归的深度。在任意脚本中增加如下代码:
import sys
sys.setrecursionlimit(1000000) 执行这个代码后,递归深度调整到一百万层,基本上足够使用了。

本文详细介绍了如何解决在生产系统中遇到的Python递归深度错误,通过调整系统的递归限制来避免`maximum recursion depth exceeded`错误。在面对仓库查询导致的长domain构造问题时,作者通过修改Python的`sys.setrecursionlimit()`函数,将递归深度调整至百万层,确保了程序的正常运行。
1628

被折叠的 条评论
为什么被折叠?



