1. 程式人生 > >Odoo8查詢產品時提示"maximum recursion depth exceeded while calling a Python object"

Odoo8查詢產品時提示"maximum recursion depth exceeded while calling a Python object"

今天在生產系統中查詢產品時,莫名提示錯誤:maximum recursion depth exceeded while calling a Python object,根據錯誤日誌提示,發現在查詢產品時,系統會構造一個domain,查詢所有庫位的庫存量。當倉庫較多的時候,構造的這個domain比較長,然後解析這個domain的方法distribute_negate是遞迴呼叫,因為遞迴次數太多,所以就提示錯誤。

根據原始碼查看了生成domain的條件,這個部分不太好調整,所以後來直接找了個方法來增加遞迴的深度。在任意指令碼中增加如下程式碼:

import sys   
sys.setrecursionlimit(1000000) 

執行這個程式碼後,遞迴深度調整到一百萬層,基本上足夠使用了。