Назад к задачам
ТочкаПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
4
Декоратор для логирования длительных асинхронных функций
Компании, где спрашивали:
Условие задачи
Необходимо реализовать декоратор 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) — появляется, так как время выполнения превышает установленный лимит.