pythonサードパーティ製パッケージretryingの自動再試行

1568 ワード

最近爬虫類を書いて、海外のウェブサイトに接続する必要があります.よく線が落ちることがあります.自分で自動再接続のコードを書きましたが、簡潔ではありません.の
それから万能のgithubに行って、3番目のバッグを見つけて、基本的に私の要求を満たすことができます.このサードパーティ製のバッグはretryingです.
私のニーズはrequest関連異常が発生するたびに、自動的にやり直し、上限は10回接続することです.使用コードは次のとおりです.
1 from retrying import retry
2 
3 def is_request_exception(e):
4     return issubclass(type(e),RequestException)
5 
6 @retry(retry_on_exception=is_request_exception,wrap_exception=False, stop_max_attempt_number=10)
7 def request_get(url, timeout=120):
8     return requests.get(url, timeout=120)

使い始めたばかりの頃、いくつかの穴にも遭遇しました.request_です.getはtryを使ったExcept、失敗を招きます.後で削除すればいいです..
私は理解して、retringパッケージの中で、すでにexception処理があって、もしあなたのコードの中でexception処理があれば、retringは異常を捕獲していないで、期待の結果に達することができません.
retryingにはまだカスタムパラメータがたくさんありますが、待ち時間制御、合計待ち時間制御など、まだ特別な要求はありません.必要なときは、もう一度検討します.