在軟體開發中,代理就像是一個“中間人”,它幫我們控制對某個功能或資源的訪問。使用代理可以實現許可權檢查、記錄動作記錄、快取資料、消極式載入等功能,而不用改動原來的代碼。這樣可以讓程式更安全、運行更快,也更容易維護和擴充。本文為您介紹V2.0 Python SDK對於網路代理程式的配置方式。
代理類型
在V2.0 Python SDK中,僅支援HTTP代理。可通過http_proxy
、https_proxy
和no_proxy
參數進行設定:
http_proxy
用於指定Proxy 伺服器地址,僅對HTTP協議的請求生效。https_proxy
用於指定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指定Proxy 伺服器地址。
通過環境變數參數HTTPS_PROXY或https_proxy指定Proxy 伺服器地址。
相關文檔
代理配置相關實踐文檔,請參見HTTP代理配置實踐。