Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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