Понимание модуля повторной попытки Tenacity

Я написал несколько исключений в конце кода. Может ли кто-нибудь объяснить, что именно не так с моим кодом, как правильно использовать упорство?

также я не мог понять использование reraise = True и False.

      import requests
from tenacity import retry, stop_after_attempt, wait_exponential, RetryError, wait_fixed, retry_if_exception_type, after, before
from urllib3.exceptions import ConnectTimeoutError, MaxRetryError


def log_attempt_number(retry_state):
    """return the result of the last call attempt"""
    print(f"attempt {retry_state.attempt_number} failed,will try once more.")


def log_before(retry_state):
    print(f"starting to attempt for {retry_state.attempt_number} time")

# Define the retry decorator
@retry(
    reraise = True,
    retry = retry_if_exception_type(),
    stop=stop_after_attempt(3), # Maximum number of retries
    wait=wait_fixed(3),
    before=log_before,
    after=log_attempt_number
)
def make_request(data):
    response = requests.get('http://localhost:8888/', timeout=0.1)
    response.raise_for_status()
    return response


def fun():
    try:
        response = make_request({ 'key': 'value' })
        print(f'SUCCESS: {response}')

    except requests.RequestException as e:
        print(f'FAILED: {e}')

    except ConnectTimeoutError as e:
        print(f'FAILED 2: {e}')

    except MaxRetryError as e:
        print(f'FAILED 3: {e}')

    except RetryError as e:
        print(f'FAILED 4: {e}')

    print("[REACHED HERE]")
    print(make_request.retry.statistics)

fun()

Я просто изучаю, как использовать упорство модуля повтора. И написал эту часть кода.

0 ответов

Другие вопросы по тегам