Python
Requests

python requestsでリトライ処理をする

More than 1 year has passed since last update.

ソース: https://stackoverflow.com/a/35504626

backoff_factorで指定した秒数xリトライ回数の分だけ間隔を空けてリトライしてくれる。以下の場合はリトライ1回目は1秒、2回目は2秒。

status_forcelistで指定されたステータスコードが返ってきた場合、もしくはタイムアウトした時にリトライする。

Retryへ指定できるパラメータはここに書いてある。

import requests

from requests.packages.urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter

s = requests.Session()

retries = Retry(total=5,
backoff_factor=1,
status_forcelist=[ 500, 502, 503, 504 ])

s.mount('https://', HTTPAdapter(max_retries=retries))
s.mount('http://', HTTPAdapter(max_retries=retries))

r = s.request('GET', 'http://localhost:5000', timeout=2, headers={'Authorization': 'foobar'})
r.raise_for_status()


追記

retryというライブラリ使えば行けそう!と思ったけど、このライブラリだとステータスコードによる処理の振り分けとかができないみたい。