| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -2,7 +2,7 @@ import socket
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import tenacity
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				@retry(stop=tenacity.stop_after_attempt(100),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				@tenacity.retry(stop=tenacity.stop_after_attempt(100),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                wait=tenacity.wait_random(min=2, max=5))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				def resolve_hostname(hostname):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    """ This function uses system DNS to resolve a hostname.
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -15,6 +15,6 @@ def resolve_address(address):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    """ This function is identical to ``resolve_host`` but also supports
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    resolving an address, i.e. including a port.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    """
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    hostname, *rest = address.resplit(":", 1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    hostname, *rest = address.rsplit(":", 1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    ip_address = resolve_hostname(hostname)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return ip_address + "".join(":" + port for port in rest)
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |