环境: odoo9      asteval 0.9.7 

背景介绍

项目中有复杂的业务,后台代码并不能实现所有可能的情况,故此引入了asteval,用于将复杂的业务逻辑写在 python code 中,用asteval去执行

问题

在服务器上运行项目时,遇到执行 python code 时候,总会出现超过递归的最大深度。

error log:

RuntimeError: maximum recursion depth exceeded while calling a Python obj

而在本地始终复现不了这个错误

解决

最后细致地调试发现,本地的 asteval 的版本是0.9.5 而服务器的 asteval 版本是0.9.7

而在 0.9.7 中引入了 RECURSION_LIMIT 这个条件控制,而且默认将最大递归设置为100。

故此要解决问题,那么要么是降级你的asteval 版本,或者补丁去修改这个递归限制值.

一般写成这样,优化代码的作用估计微乎其微了,所以就没有提优化代码这点了


mugbya
1.2k 声望41 粉丝

时间永远分岔,通往无数未来


引用和评论

0 条评论