【问题标题】:AzureException: HTTPSConnectionPool : Max retries exceeded with urlAzureException:HTTPSConnectionPool:url 超出了最大重试次数
【发布时间】:2018-11-04 19:46:38
【问题描述】:

我正在尝试在本地使用 python 将 csv/pdf 文件上传到 azure blob 存储。

我关注了这个post,但这会引发错误,

from azure.storage.blob import BlockBlobService
from azure.storage.blob import ContentSettings

block_blob_service = BlockBlobService(account_name='account_name', account_key='key1')
block_blob_service.create_container('cn1')
block_blob_service.set_container_acl('cn1', public_access=PublicAccess.Container)

#Upload the CSV file to Azure cloud
block_blob_service.create_blob_from_path(
    'mycontainer',
    'C:/uploads/blob.csv',
    'C:/uploads/blob.pdf',
    content_settings=ContentSettings(content_type='application/CSV')
            )

上传后我想使用上传的文件来处理。

Traceback(最近一次调用最后一次):

文件“”,第 1 行,在 block_blob_service.create_container('cn1')

文件 "c:\users\rb287jd\appdata\local\programs\python\python36\lib\site-packages\azure\storage\blob\baseblobservice.py", 第 600 行,在 create_container 中 self._perform_request(请求)

文件 "c:\users\rb287jd\appdata\local\programs\python\python36\lib\site-packages\azure\storage\storageclient.py", 第 280 行,在 _perform_request 提高前任

文件 "c:\users\rb287jd\appdata\local\programs\python\python36\lib\site-packages\azure\storage\storageclient.py", 第 252 行,在 _perform_request 引发 AzureException(ex.args[0])

Azure异常: HTTPSConnectionPool(host='account_name.blob.core.windows.net', port=443): url: /cn1?restype=container 超出了最大重试次数 (由 ConnectTimeoutError(, '连接到 account_name.blob.core.windows.net 超时。 (连接超时=20)'))

【问题讨论】:

    标签: python azure azure-storage azure-blob-storage azure-storage-emulator


    【解决方案1】:

    您能尝试以下更改吗?

    a) 添加缺少的导入:

    from azure.storage.blob import PublicAccess
    

    b) 如果您使用的是 Azure 存储模拟器,请按如下方式创建块 blob 服务:

    block_blob_service = BlockBlobService(is_emulated=True)
    

    c) 将容器名称更改为 cn1 而不是 mycontainer,后者是在代码早期创建的容器:

    block_blob_service.create_blob_from_path(
        'cn1',
        'C:/temp/blob.csv',
        'C:/temp/blob.pdf',
        content_settings=ContentSettings(content_type='application/CSV'))
    

    另外,请确保:

    a) Azure 存储模拟器在您的本地测试期间运行。在https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator 找到更多详细信息。

    b) 使用存储资源管理器 (https://azure.microsoft.com/en-us/features/storage-explorer/) 打开即可获得正确的存储帐户名称和密钥。

    在 Azure 存储模拟器和 Azure 本身上进行上述更改后,我能够使用适当的方法签名来创建块 blob 服务,从而使脚本正常工作。

    【讨论】:

    • 谢谢。但上述错误来自“block_blob_service.create_container('cn1')”行我无法连接到 azure blob。我想知道这是否正确,因为我是从本地 python 连接到 Azure blob。
    • 我已经更新了答案,其中包含针对 Azure 存储模拟器运行脚本的说明。我希望这会有所帮助。
    【解决方案2】:

    如果您查看错误: AzureException: HTTPSConnectionPool(host='account_name.blob.core.windows.net', port=443):

    这意味着以下任何一种:

    1. 您的网址是 HTTP 而不是 HTTPS
    2. 您的帐户名不完全限定:应该是 http(s)://server ip or name/accountname
    3. 您正在使用模拟器,但未在连接中指定如下内容: blob_service=BlockBlobService(account_name=STORAGEACCOUNTNAME,account_key=STORAGEACCOUNTKEY, is_emulated=True, protocol='http')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-30
      • 2021-02-03
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 2022-08-11
      • 2021-04-03
      相关资源
      最近更新 更多