Google app engine 在Appengine中酸洗对象时超过最大递归深度

Google app engine 在Appengine中酸洗对象时超过最大递归深度,google-app-engine,python-2.7,memcached,Google App Engine,Python 2.7,Memcached,在处理appengine项目时,python/webapp2。我们有dict“数据”,我们将用 memcache.set(一些密钥、数据) 然而,在酸洗对象时,我不断得到超过最大递归深度的RuntimeError。在没有设置sys.setrecursionlimit(number)中的某些数字的情况下,如何解决此问题 没有更多的信息很难说,但这里有一种方法对我很有效。我认为我有以下情况: 不涉及memcache 在开发环境中不可复制 序列化一个包含两个字符串和日期时间以及两个列表的类,每个类都

在处理appengine项目时,python/webapp2。我们有dict“数据”,我们将用

memcache.set(一些密钥、数据)


然而,在酸洗对象时,我不断得到超过最大递归深度的RuntimeError。在没有设置sys.setrecursionlimit(number)中的某些数字的情况下,如何解决此问题

没有更多的信息很难说,但这里有一种方法对我很有效。我认为我有以下情况:

  • 不涉及memcache
  • 在开发环境中不可复制
  • 序列化一个包含两个字符串和日期时间以及两个列表的类,每个类都由字符串和日期时间组成
  • 无法想象会有循环引用(如果有,pickle应该能够处理,不是吗?)
  • 在大约100个这样的对象中,除了一个之外,所有对象都序列化
结果是我在一个字段中设置了一个类似字符串的对象。这引用了整个已解析的HTML文档,序列化它导致溢出

我最终能够通过使用来降低家用计算机上的堆栈深度进行调试


然后,我使用了一个定制的pickler,重写了
save(self,obj)
以发出一些调试信息,并发现了问题。

您确定这是一个直接的字典吗。如果是这样的话,那么它可能有一个对自身的引用——尽管pickle应该打破这个引用。或者,字典中有数据存储实体,引用属性以某种方式循环。你应该做一些基本的调试,找出字典里的内容。问题在于你的数据。如果这是在开发环境中发生的,那么您应该能够快速了解使用pdb的情况。在开发环境中不可复制。序列化一个包含两个字符串和日期时间以及两个列表的类,每个类都由字符串和日期时间组成。无法想象在大约100个这样的对象中会有循环引用(如果有,pickle应该能够处理,不是吗?),它们都是序列化的,只有一个。今晚将继续调试,看看是否可以缩小范围。