Код Middle Celery и очереди спрашивают часто обновлено

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

Условие

Напишите backoff_schedule(retries, base, cap, jitter): задержка перед попыткой n (n от 0) равна min(cap, base * 2**n), затем умножается на коэффициент джиттера jitter[n] (число от 0 до 1, «полный джиттер»: задержка = floor(предел * jitter[n])). Верните список задержек для retries попыток. Детерминированный джиттер передаётся списком, чтобы функцию можно было тестировать.

Примеры

backoff_schedule(4, 1, 100, [1, 1, 1, 1]) // [1, 2, 4, 8]
backoff_schedule(5, 10, 60, [1, 1, 1, 1, 1]) // [10, 20, 40, 60, 60]
backoff_schedule(3, 2, 100, [0.5, 0.5, 0.25]) // [1, 2, 2]

Как подойти

Подсказки: 2
  1. Предел: min(cap, base * 2 ** n).
  2. Задержка: floor(предел * jitter[n]).

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.