Edit on GitHub

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: Обернутая асинхронная функция с логированием времени выполнения.