今天在生产系统中查询产品时,莫名提示错误:maximum recursion depth exceeded while calling a Python object,根据错误日志提示,发现在查询产品时,系统会构造一个domain,查询所有库位的库存量。当仓库较多的时候,构造的这个domain比较长,然后解析这个domain的方法distribute_negate是递归调用,因为递归次数太多,所以就提示错误。

根据源码查看了生成domain的条件,这个部分不太好调整,所以后来直接找了个方法来增加递归的深度。在任意脚本中增加如下代码:

import sys     
sys.setrecursionlimit(1000000)

执行这个代码后,递归深度调整到一百万层,基本上足够使用了。