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