希罗库+姜戈+活塞



我将Heroku与Django一起使用,并使用Piston进行API处理。

我们从普通的Amazon EC2迁移到Heroku。除了一些 API 调用之外,一切正常(网站的各个方面)。

当我运行 API 调用以获取用户拥有的对象(树)列表时,我得到以下内容:

RuntimeError at /api/tree.json
maximum recursion depth exceeded while calling a Python object

有人知道为什么会这样吗?提前感谢,我真的很感激任何提示/建议!

这是一个棘手的调试问题。原来问题在于,Heroku dynos看不到彼此的临时目录。这意味着在迁移到 Heroku 后,即使我们将文件写入临时目录,当我们计划任务来处理该文件时,该文件将神秘地不存在。我们通过将文件直接写入 S3(而不是使用临时目录)来解决此问题。

此外,活塞的新版本对数据库模式进行了更改,因此请确保其更新正确!

这基本上意味着你的三个有点过于结构化,并且解码它的函数(递归)超过了递归调用的最大深度限制(例如,递归深度 = 3 的示例是一个函数调用一个函数,调用另一个函数,调用另一个函数)。如果您使用自定义算法来解码 json,只需确保从递归方法到迭代方法(可以使用许多实现提示的算法来完成)。尝试查看递归操作的限制是多少:

>>> import sys
>>> sys.getrecursionlimit()
1000 #on my mac but this is system dependent.

如果您对它不满意,请按如下方式更改它:

>>> sys.setrecursionlimit(...)

避免设置为高数字,因为它们可能会使您的系统崩溃;我敢打赌,heroku以某种方式限制了最大深度递归。

最新更新