27 lines
714 B
Python
27 lines
714 B
Python
# Copyright (c) Microsoft. All rights reserved.
|
|
|
|
import logging
|
|
from abc import ABC, abstractmethod
|
|
from collections.abc import Awaitable, Callable
|
|
from typing import TypeVar
|
|
|
|
T = TypeVar("T")
|
|
|
|
logger: logging.Logger = logging.getLogger(__name__)
|
|
|
|
|
|
class RetryMechanismBase(ABC):
|
|
"""Base class for retry mechanisms."""
|
|
|
|
@abstractmethod
|
|
async def execute_with_retry(self, action: Callable[[], Awaitable[T]]) -> Awaitable[T]:
|
|
"""Executes the given action with retry logic.
|
|
|
|
Args:
|
|
action (Callable[[], Awaitable[T]]): The action to retry on exception.
|
|
|
|
Returns:
|
|
Awaitable[T]: An awaitable that will return the result of the action.
|
|
"""
|
|
pass
|