v0.11.3 Codeberg

Надёжные вызовы нестабильных сервисов без шторма повторов

bambulab — библиотека повторов для Python. Опишите политику один раз — попытки, задержки, какие ошибки считать временными — и оборачивайте ею любой вызов.

Начать Код на Codeberg
$ pip install bambulab
Python · Python 3.11+
from datetime import timedelta

from bambulab import Policy

policy = Policy(
    max_attempts=4,
    base_delay=timedelta(seconds=1),
)

ok = policy.run("fetch-profile")
print(ok)

n = policy.attempts("fetch-profile")
print(n)

Полный разброс

Случайные задержки не дают множеству клиентов повторять запросы синхронно.

Экспоненциальная задержка

Задержки растут с выбранным множителем до заданного предела.

Без аллокаций

Если первая попытка удалась, горячий путь ничего не выделяет.

Учёт дедлайна

Попытка не начинается, если не успеет завершиться до дедлайна вызывающего.