Python Tenacity の retry 関数2022年06月13日 13時23分13秒

Tenacity は Python の関数の再呼出しを行うデコレータ。一般的な利用箇所はエラー処理の再試行になる。

データベースエラー等は書けるようになるか、何度か試したい。ネットワーク系のエラーも一度や二度接続に失敗しても、再接続したい場合などがある。

tenacity から import して使う。

from tenacity import *

@retry(
    retry=retry_if_exception_type((IntegrityError, OperationalError)),
    wait=wait_fixed(0.2) + wait_random(0, 2),
    stop=(stop_after_delay(10) | stop_after_attempt(5)),
    before_sleep=before_sleep_log(logger, logging.WARNING),
)
def write_to_database(sql)
    pass
retry で捕捉し、再試行を試みたい例外を並べている。wait で待ち時間を指定。stop で諦める閾値を設定。再試行が試されたのをログに出力。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2022/06/13/9499546/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。