blob: 7eb27477190768e66a5aa022654afdb0bcee214f [file] [log] [blame] [edit]
import logging
import random
def disable_retry_wait_for_test():
"""Disables retry waiting. Use only with tests."""
disable_retry_wait_for_test.on = True
disable_retry_wait_for_test.on = False
def retry_delay(attempt, min_delay=5, base=30):
"""Get seconds to delay before attempting a retry.
Uses exponential backoff to determine the delay time. Setting min_delay
to 5s since lsremote and bandwidth refills every 5s.
Args:
attempt: current attempt number.
min_delay: left boundary of delay time to randomly choose from.
base: delay duration we are doubling on each attempt.
Returns:
The number of seconds to wait before retrying.
"""
assert min_delay <= base
exponential_delay = base * 2**attempt
logging.info('Picking a random delay between '
'%s and %s seconds', min_delay, exponential_delay)
if disable_retry_wait_for_test.on:
return 0
return random.randint(min_delay, exponential_delay)