AzureException:HTTPSConnectionPool:使用url超出了最大重试次数

时间:2018-05-25 11:58:15

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

我正在尝试使用本地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')
            )

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

  

追踪(最近一次呼叫最后一次):

     

文件"",第1行,in       block_blob_service.create_container(' CN1&#39)

     

文件   " C:\用户\ rb287jd \应用程序数据\本地\程序\蟒\ python36 \ lib中\站点包\天青\存储\斑点\ baseblobservice.py&#34 ;,   第600行,在create_container中       self._perform_request(请求)

     

文件   " C:\用户\ rb287jd \应用程序数据\本地\程序\蟒\ python36 \ lib中\站点包\天青\存储\ storageclient.py&#34 ;,   第280行,在_perform_request中       提出前的

     

文件   " C:\用户\ rb287jd \应用程序数据\本地\程序\蟒\ python36 \ lib中\站点包\天青\存储\ storageclient.py&#34 ;,   第252行,在_perform_request中       引发AzureException(ex.args [0])

     

AzureException:   HTTPSConnectionPool(主机=' account_name.blob.core.windows.net&#39 ;,   port = 443):使用url:/ cn1?restype = container超出了最大重试次数   (引起的   ConnectTimeoutError(,'连接到   account_name.blob.core.windows.net超时。 (连接超时= 20)'))

2 个答案:

答案 0 :(得分:0)

您可以尝试以下更改吗?

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服务。

答案 1 :(得分:0)

如果你看一下错误: 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')