Декораторы Python: задачи на retry, rate limiter, кэш и Circuit Breaker
Декоратор становится интереснее простого логирования, когда хранит историю вызовов и принимает решения по ней. Здесь вы реализуете ограничитель частоты, повтор с резервным вызовом и отключение функции после серии сбоев. В блоке кэширования есть вытеснение по весу, таймаут простоя и выбор аргументов для ключа. Проверяйте не только возвращаемое значение: для этих упражнений важны число реальных вызовов, порядок действий и сохранение метаданных функции.
Как заниматься
13 заданий ниже можно проходить по порядку или выбирать нужную проблему. В заданиях на код есть проверка решения; в вопросах — проверка выбранного ответа. Требования к реализации и примеры приведены на страницах заданий.
Вся практика собрана в бесплатном большом задачнике по Python для разработчиков.
Смежная практика
- Functools.wraps в Python: имя функции и атрибут wrapped
Functools.wraps в Python: имя функции и атрибут wrapped. Вопрос с проверкой ответа.
Практический Python для разработчиков: большой задачник - Декоратор Circuit Breaker на Python: остановка вызовов после сбоев
Декоратор Circuit Breaker на Python: остановка вызовов после сбоев. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Декораторы Python: проверка цепочки wrapped и метаданных функции
Декораторы Python: проверка цепочки wrapped и метаданных функции. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Декоратор Python: логирование только медленных вызовов
Декоратор Python: логирование только медленных вызовов. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Rate limiter на Python: декоратор со скользящим окном запросов
Rate limiter на Python: декоратор со скользящим окном запросов. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Retry и fallback на Python: декоратор повторов с резервным вызовом
Retry и fallback на Python: декоратор повторов с резервным вызовом. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Декоратор кэширования Python: ограничение веса и вытеснение по FIFO
Декоратор кэширования Python: ограничение веса и вытеснение по FIFO. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Retry-декоратор Python: преобразование исключений после исчерпания попыток
Retry-декоратор Python: преобразование исключений после исчерпания попыток. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Кэширование Python: декоратор с таймаутом простоя
Кэширование Python: декоратор с таймаутом простоя. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Декоратор Python: сглаживание повторных координат с допустимым отклонением
Декоратор Python: сглаживание повторных координат с допустимым отклонением. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Декоратор Python: валидация направления и размера перемещения
Декоратор Python: валидация направления и размера перемещения. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Декоратор кэширования Python: проверка свежести результата
Декоратор кэширования Python: проверка свежести результата. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Кэширование Python: постройте ключ из выбранных аргументов функции
Кэширование Python: постройте ключ из выбранных аргументов функции. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник
