インストール
$ pip install retry
サンプル
失敗するかもしれない不安定な関数に@retryをつけると成功するまで実行してくれる。
from retry import retry from random import randint def unreliable_func(x): if randint(0, 10) == 0: return x*x raise Exception("Sorry, I'm busy.") @retry() def solve(x): return unreliable_func(x) def main(): ret = solve(10) print (ret) if __name__ == '__main__': main()
もう少し実用的な例。
クローラを書いた時に、エラーが起きたら再トライみたいなことをしたい場合も@retryが使える。以下のサンプルでは、
- 最大4回トライする(4回実行してすべてエラーだったらエラーとする)
- トライの間隔は、5秒から始めて、10秒、20秒と2倍ずつ増やしていく
from retry import retry import urllib.request @retry(tries=4, delay=5, backoff=2) def crawl_url(url): print ("crawling...") f = urllib.request.urlopen(url) return f.read() def main(): ret = crawl_url("http://kenjih.com") print (len(ret)) if __name__ == '__main__': main()
0 件のコメント:
コメントを投稿