v0.11.3 Codeberg

Начало работы

Установка

Для bambulab нужен Python 3.11+. Добавьте библиотеку в проект:

pip install bambulab

Быстрый старт

В примере ниже создаётся Policy с парой настроек и сразу используется.

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)

Политики

Политика определяет, сколько делать попыток, сколько ждать между ними и какие ошибки повторять. Политики неизменяемы и безопасны для совместного использования.

Начните с политики по умолчанию и меняйте только то, что нужно.

Выбор задержек

Задержка перед попыткой n — случайное значение от нуля до base * factor^n, но не больше максимальной задержки. Это называется полным разбросом.

Короткие базовые задержки подходят для вызовов внутри процесса; для удалённых сервисов начинайте с нескольких сотен миллисекунд.

Какие ошибки повторять

По умолчанию повторяются только ошибки, помеченные как временные. Передайте свой классификатор, чтобы решать самим, например повторять HTTP 503, но не 400.

Никогда не повторяйте неидемпотентные операции, если сервер не умеет их дедуплицировать.