Your question is Schedule Network Retries with Backoff. Start with the requirements on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
A mobile app at Nimbus Mobile fetches data from several endpoints. Each request may time out multiple times before succeeding, and the app retries with exponential backoff.
Implement a function that computes when each request finally succeeds, assuming requests are processed independently and each retry waits longer than the previous one.
Given:
timeouts: an array where timeouts[i] is the number of consecutive timeouts before request i succeeds.base_delay: the delay after the first timeout.max_retries: the maximum number of retries allowed.For each request:
0.base_delay, 2 * base_delay, 4 * base_delay, ...max_retries, return the total elapsed wait time before success.max_retries, return -1 for that request.Return an array of results for all requests.
def schedule_retries(timeouts, base_delay, max_retries):