AzureException: HTTPSConnectionPool: максимальное количество попыток превышено с помощью URL

Я пытаюсь загрузить файлы csv/pdf в хранилище BLOB-объектов Azure, используя локально python.

Я следил за этим постом, но это выдает ошибку,

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])

AzureException: HTTPSConnectionPool (host = 'account_name.blob.core.windows.net', port = 443): превышено максимальное количество повторов с помощью url: /cn1? Restype=container (вызвано ConnectTimeoutError(, 'Соединение с account_name.blob.core. Тайм-аут Windows.net. (Тайм-аут подключения =20)'))

2 ответа

Не могли бы вы попробовать следующие изменения?

а) Добавьте отсутствующий импорт:

from azure.storage.blob import PublicAccess

б) Создайте службу блочных блобов следующим образом, если вы используете эмулятор хранилища Azure:

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'))

Кроме того, пожалуйста, убедитесь:

а) Эмулятор хранилища Azure работает во время локальных тестов. Более подробную информацию можно найти по адресу https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator.

б) У вас есть правильное имя и ключ учетной записи хранения, открыв его с помощью Storage Explorer ( https://azure.microsoft.com/en-us/features/storage-explorer/).

Я смог заставить скрипт работать после упомянутых выше изменений как в эмуляторе хранилища Azure, так и в самом Azure, используя соответствующую сигнатуру метода для создания службы блобов.

Если вы посмотрите на ошибку: AzureException: HTTPSConnectionPool(host = 'account_name.blob.core.windows.net', port = 443):

Это означает любое из следующего:

  1. Ваш URL-адрес - HTTP, а не HTTPS.
  2. Имя вашей учетной записи не полностью определено: оно должно быть http (s): // IP-адрес сервера или имя / имя учетной записи.
  3. Вы используете эмулятор и не указываете в соединении следующее: blob_service = BlockBlobService(account_name = STORAGEACCOUNTNAME,account_key = STORAGEACCOUNTKEY, is_emulated = True, protocol = 'http')
Другие вопросы по тегам