TGViewer
DEV: Рубиновые тона DEV: Рубиновые тона @dev_in_ruby_colors · 3.28K subscribers
Post #85 238
Что такое "exponential backoff mechanism" и зачем это надо? Предположим, что мы пишем скрипт для обращения к стороннему API. Естественно, этот API может иногда возвращать ошибку - например, вида "слишком много запросов". Естественно, подобную ошибку надо обрабатывать и пытаться отправить запрос повторно спустя некоторое время. Однако спамить сервер запросами каждую секунду всё-таки не стоит. Более того, имеет смысл ограничить максимальное количество попыток, после чего сдаться и сообщить пользователю, что до сервера достучаться не удалось. В этом-то случае и подойдёт данный механизм:

          retries = 0
begin
upload_file some_arguments
rescue TooManyRequests => e
raise(e.class, "Gave up after #{retries} retries") if retries >= max_retries

sleep 2**retries
retries += 1
retry
end


Формула тут очень простая: 2**retries (ну, это не совсем экспонента, но это не столь важно). Теперь выходит, что если max_retries=5, то будет сделано не больше пяти попыток обратиться к серверу, причём попытки будут сделаны не одна за другой через секунду, а с разными промежутками времени. Можно даже ввести элемент случайности и генерировать случайное количество секунд в некоем диапазоне
More from @dev_in_ruby_colors
  1. Oct 4, 2026В этом уроке по абстрактной алгебре говорим про ideals (идеалы), factor (quotient) rings и…
  2. Sep 28, 2026Github буйствует
  3. Sep 26, 2026В этом уроке по абстрактной алгебре говорим про области целостности, делители нуля, характ…
  4. Sep 22, 2026А тем временем сказ о ведьмаке, потерявшем память, уже доступен в виде аудиокниги. Целых 1…
  5. Sep 20, 2026В этом уроке по абстрактной алгебре продолжаем говорить о кольцах: в частности о subrings…
  6. Sep 17, 2026Сделал обзор актуальных библиотек JS для сбора данных, 10 штук бодрых решений на все случа…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →