Назад к задачам
Junior — Senior
4

Декоратор для логирования длительных асинхронных функций

Компании, где спрашивали:

ТочкаТочка
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо реализовать декоратор slowlog, который будет измерять время работы асинхронной функции. Если время выполнения превышает заданный порог (в секундах), информация о таком вызове должна выводиться в консоль через модуль logging.

import time, asyncio, logging
logging.basicConfig(level=logging.INFO)

def slowlog():
    # ...

@slowlog(limit=2)
async def test_func(wait_time):
    # ...
    time.sleep(wait_time)
    return wait_time

asyncio.run(test_func(1))  # не должно логироваться
asyncio.run(test_func(3))  # должно логироваться

В примере показано, как использовать декоратор: при вызове test_func(1) лог не появляется, а при test_func(3) — появляется, так как время выполнения превышает установленный лимит.