src.core.metric
Сбор метрик скорости работы
1"""Сбор метрик скорости работы""" 2 3import functools 4import logging 5from time import time 6 7logger = logging.getLogger() 8 9 10def async_speed_metric(func): 11 """Декоратор для измерения времени выполнения асинхронной функции. 12 13 Этот декоратор оборачивает асинхронную функцию и логирует время, затраченное на ее выполнение. 14 15 Args: 16 func (Callable): Асинхронная функция, время выполнения которой нужно измерить. 17 18 Returns: 19 Callable: Обернутая асинхронная функция с логированием времени выполнения. 20 """ 21 22 @functools.wraps(func) 23 async def wrapper(*args, **kwargs): 24 """Обертка для асинхронной функции, измеряющая время выполнения. 25 26 Args: 27 *args: Позиционные аргументы для переданной функции. 28 **kwargs: Именованные аргументы для переданной функции. 29 30 Returns: 31 Any: Результат выполнения обернутой функции. 32 """ 33 start = time() 34 result = await func(*args, **kwargs) 35 logger.debug( 36 f"METRIC::{func.__module__}::{func.__name__}::[ {int((time()-start)*1000):d} ]msec" 37 ) 38 return result 39 40 return wrapper
logger =
<RootLogger root (DEBUG)>
def
async_speed_metric(func):
11def async_speed_metric(func): 12 """Декоратор для измерения времени выполнения асинхронной функции. 13 14 Этот декоратор оборачивает асинхронную функцию и логирует время, затраченное на ее выполнение. 15 16 Args: 17 func (Callable): Асинхронная функция, время выполнения которой нужно измерить. 18 19 Returns: 20 Callable: Обернутая асинхронная функция с логированием времени выполнения. 21 """ 22 23 @functools.wraps(func) 24 async def wrapper(*args, **kwargs): 25 """Обертка для асинхронной функции, измеряющая время выполнения. 26 27 Args: 28 *args: Позиционные аргументы для переданной функции. 29 **kwargs: Именованные аргументы для переданной функции. 30 31 Returns: 32 Any: Результат выполнения обернутой функции. 33 """ 34 start = time() 35 result = await func(*args, **kwargs) 36 logger.debug( 37 f"METRIC::{func.__module__}::{func.__name__}::[ {int((time()-start)*1000):d} ]msec" 38 ) 39 return result 40 41 return wrapper
Декоратор для измерения времени выполнения асинхронной функции.
Этот декоратор оборачивает асинхронную функцию и логирует время, затраченное на ее выполнение.
Arguments:
- func (Callable): Асинхронная функция, время выполнения которой нужно измерить.
Returns:
Callable: Обернутая асинхронная функция с логированием времени выполнения.