Stu*_*Cat 1 python recursion timeout
我有一个脚本,可以递归地分析链接中的javascript,所以如果它找到了javascript,那么它会分析javascript,如果它正在分析的javascript包含更多的javascript,那么它会继续运行,等等.但是,我遇到过这种递归永远不会停止的问题,有没有办法为这个递归添加超时?
Python有一个内置的递归限制,RuntimeError
如果超出这个限制将会提高.默认情况下,它的堆栈限制为1000.所以:
try:
func_that_may_recurse_infinitely() # i.e., your JavaScript crawler func
except RuntimeError as e:
if "recursion" in str(e):
print "stop all the downloadin'!"
Run Code Online (Sandbox Code Playgroud)
sys.setrecursionlimit()
如果您需要更深或更浅,可以修改初始递归限制.
但是,更好的方法可能是保留set()
您已经看过的项目,然后拒绝处理您已经处理过的任何项目.这可以防止您首先进入递归情况.