Начало работы
Установка
Для 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.
Никогда не повторяйте неидемпотентные операции, если сервер не умеет их дедуплицировать.