如果组织需要使用代理服务器来访问 Internet 资源,则需要使用代理服务器信息设置环境变量,以使用适用于 Python 的 Azure SDK。 将环境变量设置为 (HTTP_PROXY和HTTPS_PROXY) 会导致用于 Python 的 Azure SDK 在运行时使用代理服务器。

代理服务器 URL 采用可选用户名和密码组合的形式 http[s]://[username:password@]<ip_address_or_domain>:<port>/

然后,可以使用环境变量来全局配置代理,也可以通过将名为 proxies 的参数传递给单个客户端构造函数或操作方法来指定代理。

若要为脚本或应用全局配置代理,请使用服务器 URL 定义 HTTP_PROXY HTTPS_PROXY 环境变量。 这些变量适用于任何版本的 Azure 库。 请注意, HTTPS_PROXY 这并不意味着 HTTPS 代理,而是请求的 https:// 代理。

如果将参数 use_env_settings=False 传递给客户端对象构造函数或操作方法,则将忽略这些环境变量。

从 Azure CLI 设置

set HTTP_PROXY=http://username:password@10.10.1.10:1180 rem Non-authenticated HTTPS server: set HTTPS_PROXY=http://10.10.1.10:1180 rem Authenticated HTTPS server: set HTTPS_PROXY=http://username:password@10.10.1.10:1180 # Non-authenticated HTTP proxy for HTTPS requests: export HTTPS_PROXY=http://10.10.1.10:1180 # Authenticated HTTP proxy for HTTPS requests: export HTTPS_PROXY=http://username:password@10.10.1.10:1180 # Non-authenticated HTTP proxy for HTTP requests: export HTTP_PROXY=http://10.10.1.10:1180 # Authenticated HTTP proxy for HTTP requests: export HTTP_PROXY=http://username:password@10.10.1.10:1180

在 Python 代码中设置

可以使用环境变量设置代理设置,无需自定义配置。

import os os.environ["HTTP_PROXY"] = "http://10.10.1.10:1180" # Alternate URL and variable forms: # os.environ["HTTP_PROXY"] = "http://username:password@10.10.1.10:1180" # os.environ["HTTPS_PROXY"] = "http://10.10.1.10:1180" # os.environ["HTTPS_PROXY"] = "http://username:password@10.10.1.10:1180"

自定义配置

在 Python 代码中按客户端或按方法设置

对于自定义配置,可以为特定的客户端对象或操作方法指定代理。 使用名为 的参数 proxies 指定代理服务器。

例如,文章 示例:使用 Azure 存储 中的以下代码使用 BlobClient 构造函数指定了具有用户凭据的 HTTPS 代理。 在此案例中,对象来自 azure.storage.blob 库,该库基于 azure.core。

from azure.identity import DefaultAzureCredential # Import the client object from the SDK library from azure.storage.blob import BlobClient credential = DefaultAzureCredential() storage_url = "your_url" blob_client = BlobClient(storage_url, container_name="blob-container-01", blob_name="sample-blob.txt", credential=credential, proxies={ "https": "https://username:password@10.10.1.10:1180" } # Other forms that the proxy URL might take: # proxies={ "http": "http://10.10.1.10:1180" } # proxies={ "http": "http://username:password@10.10.1.10:1180" } # proxies={ "https": "https://10.10.1.10:1180" }