获得;调用Python对象时超出了最大递归深度;芹菜

获得;调用Python对象时超出了最大递归深度;芹菜,python,celery,Python,Celery,我是初学者。我正在芹菜中运行一个任务,并得到这个奇怪的错误 调用Python对象时超出了最大递归深度 您可以在中检查完整错误 我不太明白,因为我没有改变任何事情,昨天一切都很好。我在python解释器中没有芹菜的情况下运行了这个任务,它运行得很好。最后,您可以检查函数,不管它值多少钱,这个任务被其他任务创建了12次 你有没有看到任何可能造成这种错误的东西 编辑: 这就是我称之为此函数/任务的任务 @celery.task(ignore_result=True) def get_classicda

我是初学者。我正在芹菜中运行一个任务,并得到这个奇怪的错误

调用Python对象时超出了最大递归深度

您可以在中检查完整错误

我不太明白,因为我没有改变任何事情,昨天一切都很好。我在python解释器中没有芹菜的情况下运行了这个任务,它运行得很好。最后,您可以检查函数,不管它值多少钱,这个任务被其他任务创建了12次

你有没有看到任何可能造成这种错误的东西

编辑:

这就是我称之为此函数/任务的任务

@celery.task(ignore_result=True)
def get_classicdata(leagueid):
    print "getting team data for %s"%leagueid
    returned_data = {}
    for team in r.smembers('league:%s'%leagueid):
        data = scrapteam.delay(team,r.get('currentgw'))
        returned_data[team] = data.get()

一切看起来都很好。回溯意味着某个地方返回的对象不能被pickle,但返回的“team”数据结构是一个包含基本类型的非递归数据结构的字典,因此不会导致问题。为了更好地进行远程调试,请在“return team”之前放置一条print语句,以便它显示团队的内容。您也可以尝试让它返回一个{},看看这是否会改变情况


然后在get\u classicdata中添加一个调试print语句,显示data.get()的内容,以及返回之前的内容,为了验证该函数是否已完成。

您如何调用该函数以及在何处调用该函数?@alexvassel我已将我的问题与调用该函数/任务的任务编辑在一起。我无法理解您的代码。什么是r?返回r.smembers()和r.get()的是什么?r到底是什么?这就是我访问redis DB的方式。r、 smembers('league:%s'%leagueid)返回一组ID r.get('currentgw')返回一个INT。无论出于何种原因,我添加了您建议的打印语句,它再次开始工作。如果错误再次出现,我将把它们留在那里一段时间。谢谢你的帮助!一个很长的可能性是:可能您的网络文件系统有扭曲的时间戳,因此芹菜任务拾取的是一个带有错误代码的旧.pyc文件,而不是正确的.py文件。