Skip to content

Instantly share code, notes, and snippets.

@kdeloach
Last active March 10, 2016 23:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kdeloach/666554f21b3382845fdb to your computer and use it in GitHub Desktop.
Save kdeloach/666554f21b3382845fdb to your computer and use it in GitHub Desktop.
Find the optimal backoff ratio for retrying failed requests
from __future__ import division
# Usage:
# python retry_backoff_test.py | sort | uniq -c
def test(ratio, target):
timeout = 0.5
duration = timeout
tries = 0
while duration < target:
timeout *= ratio
duration += timeout
tries += 1
return tries, duration
if __name__ == '__main__':
for target_duration in range(100):
winner = None
winner_time = float('inf')
winner_tries = 0
for ratio in range(12, 32, 2):
ratio /= 10
tries, duration = test(ratio, target_duration)
if duration < winner_time:
winner = ratio
winner_time = duration
winner_tries = tries
print(winner)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment