Python スクレイピング

Python3 RecursionError: maximum recursion depth exceeded

投稿日:2017年11月14日 更新日:

再起処理の自作URLクローラーを夜回したら、朝起きたら落ちていた。

  File "/usr/lib/python3.5/threading.py", line 224, in __init__
 self._release_save = lock._release_save
RecursionError: maximum recursion depth exceeded

 

公式ドキュメントによると、組み込み例外というらしい。

https://docs.python.jp/3/library/exceptions.html

exception RecursionError(原文)
この例外は RuntimeError を継承しています。インタープリタが最大再帰深度 (sys.getrecursionlimit() を参照) の超過を検出すると送出されます。

対策はhttps://qiita.com/narupo/items/e25ac05a9065c0bd9c03 に出ていた。

import sys
sys.setrecursionlimit(10000)

上限はいくつなんだろう?

sys.setrecursionlimit(limit)(原文)
Python インタプリタの、スタックの最大の深さを limit に設定します。この制限は Python プログラムが無限に再帰し、 C スタックがオーバーフローしてクラッシュすることを防止するために設けられています。

limit の最大値はプラットフォームによって異なります。深い再帰処理が必要な場合にはプラットフォームがサポートしている範囲内でより大きな値を指定することができますが、この値が大きすぎればクラッシュするので注意が必要です。

 

-Python, スクレイピング

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Ubuntu16.04にPython3環境を構築する

Ubuntu16.04をインストールしたら、この順でやっていこう。 1.aptのパッケージリスト最新化 $ sudo apt update   2.Python3の最新化 $ sudo ap …

no image

Python BeautifulSoupメモ

BeautifulSoupとは? Python pipでパッケージ管理されている。HTMLを容易に解析する機能提供する。 BeautifulSoup import宣言 from bs4 import …

no image

クローラーとスクレイピングの構成 

くローラーとスクレイピング(スクレイパー?)は分離しておく。 クローラーが最後まで終わってからスクレイピングではなく、クローラーからメッセージを送って、そのタイミングでスクレイピングを開始するようにす …

no image

Python3 RotatingFileHandlerでログファイルサイズを抑えて世代管理

RotatingFileHandlerは何世代までローテーションできる? RotatingFileHandlerは何世代でもローテ―ションできるようです。 args=(“log/app.log”, ‘ …

no image

取得可能ドメイン・ドメイン取得可否のrequests.response.http_status_code

取得可能なドメインは2種類ある。 期限切れのドメイン(中古ドメイン) 全く新規のドメイン それぞれ、どのようなrequests.response.http_status_codeを返すのだろうか。下記 …