Sobes.tech
Junior — Senior

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

livecode

Condição da tarefa

Необходимо реализовать декоратор 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) — появляется, так как время выполнения превышает установленный лимит.