def test_example_retry_policy(): url = "https://bing.com" config = Configuration() config.user_agent_policy = UserAgentPolicy("myusergant") config.redirect_policy = RedirectPolicy() # [START retry_policy] from azure.core.pipeline.policies import RetryPolicy config.retry_policy = RetryPolicy() # Total number of retries to allow. Takes precedence over other counts. # Default value is 10. config.retry_policy.total_retries = 5 # How many connection-related errors to retry on. # These are errors raised before the request is sent to the remote server, # which we assume has not triggered the server to process the request. Default value is 3 config.retry_policy.connect_retries = 2 # How many times to retry on read errors. # These errors are raised after the request was sent to the server, so the # request may have side-effects. Default value is 3. config.retry_policy.read_retries = 4 # How many times to retry on bad status codes. Default value is 3. config.retry_policy.status_retries = 3 # A backoff factor to apply between attempts after the second try # (most errors are resolved immediately by a second try without a delay). # Retry policy will sleep for: # {backoff factor} * (2 ** ({number of total retries} - 1)) # seconds. If the backoff_factor is 0.1, then the retry will sleep # for [0.0s, 0.2s, 0.4s, ...] between retries. # The default value is 0.8. config.retry_policy.backoff_factor = 0.5 # The maximum back off time. Default value is 120 seconds (2 minutes). config.retry_policy.backoff_max = 120 # Alternatively you can disable redirects entirely config.retry_policy = RetryPolicy.no_retries() # All of these settings can also be configured per operation. client = PipelineClient(base_url=url, config=config) request = client.get(url) pipeline_response = client._pipeline.run(request, retry_total=10, retry_connect=1, retry_read=1, retry_status=5, retry_backoff_factor=0.5, retry_backoff_max=120, retry_on_methods=['GET']) # [END retry_policy] response = pipeline_response.http_response assert response.status_code == 200
def test_example_no_retries(): url = "https://bing.com" retry_policy = RetryPolicy.no_retries() client = PipelineClient(base_url=url, policies=[retry_policy]) request = client.get(url) pipeline_response = client._pipeline.run(request) response = pipeline_response.http_response # bing returns 301 if not retried assert response.status_code == 301