Декоратор для ограничения количества вызовов функции в секунду.
from wrng.decorators import ratelimit
@ratelimit(calls=5, period=10)
def my_function():
print("Функция вызвана")
for _ in range(7):
try:
my_function()
except Exception as e:
print(e)
time.sleep(1)
Декоратор для ограничения времени выполнения функции.
from wrng.decorators import timeout
@timeout(2)
def my_function():
time.sleep(3)
print("Функция завершилась")
Декоратор для повторного выполнения функции в случае исключения.
from wrng.decorators import retry
@retry(autoretry_for=(ValueError,), max_retries=5, retry_backoff=2, retry_backoff_max=30, retry_jitter=True)
def unreliable_function():
if random.random() > 0.01:
print("Ошибка!")
raise ValueError("Произошла ошибка")
return "Успех!"
try:
result = unreliable_function()
print(result)
except ValueError as e:
print(f"Не удалось выполнить функцию: {e}")
Декоратор для измерения времени выполнения функции.
from wrng.decorators import timer
logger = logging.getLogger(__name__)
@timer(logger)
def my_function():
time.sleep(1)
print("Функция завершилась")
from wrng.decorators import return_stub
from wrng.decorators.return_stub import ModeType
@return_stub(42, mode=ModeType.Fail)
def my_function(raise_exception=False):
if raise_exception:
raise ValueError("Произошла ошибка")
return 'kek'
assert my_function() == 'kek'
assert my_function(raise_exception=True) == 42
Контекстный менеджер для измерения времени выполнения блока кода.
from wrng.context_managers import timer
with timer(seconds=2):
time.sleep(1)
print("Блок кода завершился")