如何在NetworkManagementClient的Azure Python SDK中设置会话代理?

问题描述:

我希望能够通过Azure Python SDK NetworkManagementClient (NMC)使用代理服务器。我看到NMC_client属性的类型为msrest.service_client,其中包括config属性的NetworkManagementClientConfiguration,它继承自AzureConfiguration,该属性本身具有msrest.pipeline.ClientProxies类型的代理属性。如何在NetworkManagementClient的Azure Python SDK中设置会话代理?

鉴于上述情况,似乎配置代理是可能的,但我不明白设置它的正确方法。

首先,msrest正在使用请求,所以我假设你读了proxies documentation of requests。也请注意,requests.Session对象具有trust_env属性,默认为True,用于读取一些env变量,如HTTP_PROXY

客户端的配置具有proxies属性,正如您提到的ClientProxies类。这个类有一个proxies字典属性本身和一个add方法添加在这个字典。这个类也有一个use_env_settings布尔属性。

假设你有一个NetworkManagementClient可变client实例,因此您可以:

  • 只需使用HTTP_PROXY/HTTPS_PROXY。请注意,您可以使用乏

    client.config.proxies.use_env_settings = False

    这只是一个别名的请求trust_env禁用ENV。

  • 定义你自己的代理:

    client.config.proxies.add('http', 'http://example.org:8080')

    呼叫实际上是等同于

    session.get(url,proxies={'http': 'http://example.org:8080'})

(我自己msrest在MS)