我正在创建一个网页刮刀来浏览近400k的记录。基本上,它是这样工作的,我有一个CSV格式的部件号,需要在此站点上搜索。此站点有一个公开的API,因此我可以跳过前端,在登录后直接请求此站点。我创建了一个名为GetPdcResults的函数(),它接受一个部件列表和一个开始编号。start参数是为了如果刮刀因为任何原因停止,我可以在它在部件列表上离开的同一点重新启动它。然后scraper的主循环会枚举列表中的每个部分,为该部分构建一个有效负载并请求信息。如果我有网络错误或cookie错误,只有当我的用户会话过期时才会发生一些错误处理。然后调用CleanPdcResults()函数,清除站点返回的响应,并将相关信息保存为CSV格式以供导出。
据我所知,递归是指一个函数反复调用它自己,在python中这是有限制的,而且更耗费资源;迭代是指你使用一个循环来重复一组动作。
我想我希望在我的应用程序迭代,而不是递归,因为目前我a,得到这个错误,我从来没有见过。
RecursionError: maximum recursion depth exceeded while calling a Python object
我假设是因为我的函数中发生了递归而不是迭代,但我似乎不能指出这一点,函数调用自己的唯一时间是当出现cookie错误时,GetPdcResults()函数被再次调用,但不会被调用太多次而达到Limit。
有人能帮我找到我的剪贴板中递归发生的地方吗?我怎样才能把它转换成迭代来阻止这个错误?任何帮助都是感激的!
x一个一个一个一个x一个一个二个x
1条答案
按热度按时间gcmastyq1#
Python的默认值maximum recursion depth是1000,但是您可以使用 *
print(sys.getrecursionlimit())
* 检查您的值,或者使用设置一个新值但这被认为是一种危险的方法
相反,您应该考虑为
GetPdcResults
[或任何其他递归函数]设置额外的参数-类似于然后在每次递归调用时递增
curDepth
,例如