はじめに
APIの呼び出しにおいて、一時的あるい頻繁にエラーを返す場合などがあります。
そういった場合に、**Exponential Backoff(指数関数的後退)**と言った指数関数的にリトライ間隔を後退させるアルゴリズムが使われます。
つまり、2秒後、4秒後、8秒後、16秒後などのようにリトライ間隔を後退させて行きます。
最近、使ったとあるAPIが1回のリクエストで中々activeになってくれないという事象が発生したので、リトライ処理の実装を行いました。
そうようなリトライ処理をPythonではデコレータを用いて簡単に実装する事ができました。
環境
- Python 3.6.5
ライブラリ
retry
https://pypi.org/project/retry/
実装
from retry import retry
@retry(tries=3, delay=2, backoff=2)
def zero_division():
try:
return 10 / 0
except ZeroDivisionError as ex:
print("error")
raise