api: Add delay_cap as class variable of CountingBackoff class.
This commit is contained in:
		
							parent
							
								
									62555f97a0
								
							
						
					
					
						commit
						056963bedd
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -56,12 +56,13 @@ requests_json_is_function = callable(requests.Response.json)
 | 
			
		|||
API_VERSTRING = "v1/"
 | 
			
		||||
 | 
			
		||||
class CountingBackoff(object):
 | 
			
		||||
    def __init__(self, maximum_retries=10, timeout_success_equivalent=None):
 | 
			
		||||
        # type: (int, Optional[float]) -> None
 | 
			
		||||
    def __init__(self, maximum_retries=10, timeout_success_equivalent=None, delay_cap=90.0):
 | 
			
		||||
        # type: (int, Optional[float], float) -> None
 | 
			
		||||
        self.number_of_retries = 0
 | 
			
		||||
        self.maximum_retries = maximum_retries
 | 
			
		||||
        self.timeout_success_equivalent = timeout_success_equivalent
 | 
			
		||||
        self.last_attempt_time = 0.0
 | 
			
		||||
        self.delay_cap = delay_cap
 | 
			
		||||
 | 
			
		||||
    def keep_going(self):
 | 
			
		||||
        # type: () -> bool
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +95,7 @@ class RandomExponentialBackoff(CountingBackoff):
 | 
			
		|||
        # Exponential growth with ratio sqrt(2); compute random delay
 | 
			
		||||
        # between x and 2x where x is growing exponentially
 | 
			
		||||
        delay_scale = int(2 ** (self.number_of_retries / 2.0 - 1)) + 1
 | 
			
		||||
        delay = delay_scale + random.randint(1, delay_scale)
 | 
			
		||||
        delay = min(delay_scale + random.randint(1, delay_scale), delay_cap)
 | 
			
		||||
        message = "Sleeping for %ss [max %s] before retrying." % (delay, delay_scale * 2)
 | 
			
		||||
        try:
 | 
			
		||||
            logger.warning(message)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue