代理配置
更新时间:
在软件开发中,代理就像是一个“中间人”,它帮我们控制对某个功能或资源的访问。使用代理可以实现权限检查、记录操作日志、缓存数据、延迟加载等功能,而不用改动原来的代码。这样可以让程序更安全、运行更快,也更容易维护和扩展。本文为您介绍V2.0 Python SDK对于网络代理的配置方式。
代理类型
在V2.0 Python SDK中,仅支持HTTP代理。可通过http_proxy
、https_proxy
和no_proxy
参数进行设置:
http_proxy
用于指定代理服务器地址,仅对HTTP协议的请求生效。https_proxy
用于指定代理服务器地址,仅对HTTPS协议的请求生效。no_proxy
用于指定无需通过代理访问的地址列表,多个地址之间用逗号分隔,支持域名和IP地址格式。
代理配置方式
说明
代理配置优先级为:RuntimeOptions配置->Config配置->环境变量,优先级依次降低。
通过运行时参数(RuntimeOptions)配置代理,仅对使用了该运行时参数的请求有效。
示例代码如下:
import os from alibabacloud_ecs20140526.client import Client as EcsClient from alibabacloud_ecs20140526.models import DescribeRegionsRequest from alibabacloud_tea_openapi.models import Config from alibabacloud_tea_util.models import RuntimeOptions config = Config( access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'), access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), endpoint='ecs-cn-hangzhou.aliyuncs.com', protocol='https', # 请求协议与HTTP代理配置参数有关,httpsProxy仅对https协议有效,httpProxy仅对http协议有效。 ) ecs_client = EcsClient(config) # 在RuntimeOptions中配置代理 runtimeOptions = RuntimeOptions( http_proxy='http://127.0.0.1:9898', https_proxy='http://user:password@127.0.0.1:8989', no_proxy='127.0.0.1,localhost,localdomain.com' ) request = DescribeRegionsRequest() response = ecs_client.describe_regions_with_options(request, runtimeOptions) print(response.body)
在初始化客户端阶段,通过Config类配置代理,对所有请求都生效。
示例代码如下:
import os from alibabacloud_ecs20140526.client import Client as EcsClient from alibabacloud_ecs20140526.models import DescribeRegionsRequest from alibabacloud_tea_openapi.models import Config from alibabacloud_tea_util.models import RuntimeOptions config = Config( access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'), access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), endpoint='ecs-cn-hangzhou.aliyuncs.com', protocol='https', # 请求协议与HTTP代理配置参数有关,httpsProxy仅对https协议有效,httpProxy仅对http协议有效。 # 代理配置 http_proxy='http://127.0.0.1:9898', https_proxy='http://user:password@127.0.0.1:8989', no_proxy='127.0.0.1,localhost,localdomain.com' ) ecs_client = EcsClient(config) runtimeOptions = RuntimeOptions() request = DescribeRegionsRequest() response = ecs_client.describe_regions_with_options(request, runtimeOptions) print(response.body)
通过环境变量配置代理:
说明不支持在环境变量中配置
no_proxy
。通过环境变量参数HTTP_PROXY或http_proxy指定代理服务器地址。
通过环境变量参数HTTPS_PROXY或https_proxy指定代理服务器地址。
相关文档
代理配置相关实践文档,请参见HTTP代理配置实践。
该文章对您有帮助吗?