Код 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
- Предел:
min(cap, base * 2 ** n). - Задержка:
floor(предел * jitter[n]).
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.