def test_example_redirect_policy(): url = "https://bing.com" # [START redirect_policy] from azure.core.pipeline.policies import RedirectPolicy config = Configuration() config.redirect_policy = RedirectPolicy() # Client allows redirects. Defaults to True. config.redirect_policy.allow = True # The maximum allowed redirects. The default value is 30 config.redirect_policy.max_redirects = 10 # Alternatively you can disable redirects entirely config.redirect_policy = RedirectPolicy.no_redirects() # It can also be overridden per operation. client = PipelineClient(base_url=url, config=config) request = client.get(url) pipeline_response = client._pipeline.run(request, permit_redirects=True, redirect_max=5) # [END redirect_policy] response = pipeline_response.http_response assert response.status_code == 200
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" config = Configuration() config.retry_policy = RetryPolicy.no_retries() client = PipelineClient(base_url=url, config=config) 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
def test_example_pipeline_client(): url = "https://bing.com" # [START build_pipeline_client] from azure.core import Configuration, PipelineClient from azure.core.pipeline.policies import RedirectPolicy, UserAgentPolicy # example configuration with some policies config = Configuration() config.user_agent_policy = UserAgentPolicy("myuseragent") config.redirect_policy = RedirectPolicy() client = PipelineClient(base_url=url, config=config) request = client.get("https://bing.com") pipeline_response = client._pipeline.run(request) # [END build_pipeline_client] response = pipeline_response.http_response assert response.status_code == 200
def test_example_user_agent_policy(): url = "https://bing.com" config = Configuration() config.redirect_policy = RedirectPolicy() # [START user_agent_policy] from azure.core.pipeline.policies import UserAgentPolicy config.user_agent_policy = UserAgentPolicy() # The user-agent policy allows you to append a custom value to the header. config.user_agent_policy.add_user_agent("CustomValue") # You can also pass in a custom value per operation to append to the end of the user-agent. # This can be used together with the policy configuration to append multiple values. client = PipelineClient(base_url=url, config=config) request = client.get(url) pipeline_response = client._pipeline.run(request, user_agent="AnotherValue") # [END user_agent_policy] response = pipeline_response.http_response assert response.status_code == 200
def test_example_headers_policy(): url = "https://bing.com" config = Configuration() config.user_agent_policy = UserAgentPolicy("myusergant") config.redirect_policy = RedirectPolicy() # [START headers_policy] from azure.core.pipeline.policies import HeadersPolicy config.headers_policy = HeadersPolicy() config.headers_policy.add_header('CustomValue', 'Foo') # Or headers can be added per operation. These headers will supplement existing headers # or those defined in the config headers policy. They will also overwrite existing # identical headers. client = PipelineClient(base_url=url, config=config) request = client.get(url) pipeline_response = client._pipeline.run(request, headers={'CustomValue': 'Bar'}) # [END headers_policy] response = pipeline_response.http_response assert response.status_code == 200
def example_network_trace_logging(): filename = "log.txt" url = "https://bing.com" config = Configuration() config.redirect_policy = RedirectPolicy() # [START network_trace_logging_policy] from azure.core.pipeline.policies import NetworkTraceLoggingPolicy import sys import logging # Create a logger for the 'azure' SDK logger = logging.getLogger("azure") logger.setLevel(logging.DEBUG) # Configure a console output handler = logging.StreamHandler(stream=sys.stdout) logger.addHandler(handler) # Configure a file output file_handler = logging.FileHandler(filename) logger.addHandler(file_handler) # Enable network trace logging. This will be logged at DEBUG level. # By default, logging is disabled. config.logging_policy = NetworkTraceLoggingPolicy() config.logging_policy.enable_http_logger = True # The logger can also be enabled per operation. client = PipelineClient(base_url=url, config=config) request = client.get(url) pipeline_response = client._pipeline.run(request, logging_enable=True) # [END network_trace_logging_policy] response = pipeline_response.http_response assert response.status_code == 200