简体   繁体   中英

Time out: Access Azure blob storage from within an Azure ML experiment

I would like to access azure blob storage from within an Azure ML experiment. I completely followed the answer from Access Azure blog storage from within an Azure ML experiment however, there was some error.

My code is

from azure.storage.blob import BlobService

def azureml_main(dataframe1 = None, dataframe2 = None):
   dataframe1.to_csv("output.csv", index=True)
   account_name = "acount_name"
   account_key="rJfqPEFcbgpS...SKZrBs5J2eOq0IJYrc2Vg=="
   CONTAINER_NAME = "CONTAINER_NAME"

   blob_service = BlobService(account_name, account_key, protocol='http')
   blob_service.put_block_blob_from_path(CONTAINER_NAME,"output","output.csv")

The error log is blow

[Critical]     Error: Error 0085: The following error occurred during script 
evaluation, please view the output log for more information:
---------- Start of error message from Python interpreter ----------
Caught exception while executing function: Traceback (most recent call last):
File "C:\pyhome\lib\site-
packages\requests\packages\urllib3\connectionpool.py", line 559, in urlopen
body=body, headers=headers)
File "C:\pyhome\lib\site-
packages\requests\packages\urllib3\connectionpool.py", line 353, in 
_make_request
conn.request(method, url, **httplib_request_kw)
File "C:\pyhome\lib\http\client.py", line 1083, in request
self._send_request(method, url, body, headers)
File "C:\pyhome\lib\http\client.py", line 1128, in _send_request
self.endheaders(body)
File "C:\pyhome\lib\http\client.py", line 1079, in endheaders
self._send_output(message_body)
File "C:\pyhome\lib\http\client.py", line 911, in _send_output
self.send(msg)
File "C:\pyhome\lib\http\client.py", line 885, in send
self.sock.sendall(data)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\pyhome\lib\site-packages\requests\adapters.py", line 376, in send
timeout=timeout
File "C:\pyhome\lib\site-
packages\requests\packages\urllib3\connectionpool.py", line 609, in urlopen
_stacktrace=sys.exc_info()[2])
File "C:\pyhome\lib\site-packages\requests\packages\urllib3\util\retry.py", 
line 247, in increment
raise six.reraise(type(error), error, _stacktrace)
File "C:\pyhome\lib\site-packages\requests\packages\urllib3\packages\six.py", 
line 309, in reraise
raise value.with_traceback(tb)
File "C:\pyhome\lib\site-
packages\requests\packages\urllib3\connectionpool.py", line 559, in urlopen
body=body, headers=headers)
File "C:\pyhome\lib\site-
packages\requests\packages\urllib3\connectionpool.py", line 353, in 
_make_request
conn.request(method, url, **httplib_request_kw)
File "C:\pyhome\lib\http\client.py", line 1083, in request
self._send_request(method, url, body, headers)
File "C:\pyhome\lib\http\client.py", line 1128, in _send_request
self.endheaders(body)
File "C:\pyhome\lib\http\client.py", line 1079, in endheaders
self._send_output(message_body)
File "C:\pyhome\lib\http\client.py", line 911, in _send_output
self.send(msg)
File "C:\pyhome\lib\http\client.py", line 885, in send
self.sock.sendall(data)
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', 
timeout('timed out',))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\server\invokepy.py", line 199, in batch
odfs = mod.azureml_main(*idfs)
File "C:\temp\a24f27b62ef74991b262bafe5e685164.py", line 39, in azureml_main
blob_service.put_block_blob_from_path(CONTAINER_NAME,"ppp","output.csv")
File "c:\temp\script bundle\azure\storage\blob\blobservice.py", line 975, in 
put_block_blob_from_path
retry_wait)
File "c:\temp\script bundle\azure\storage\blob\blobservice.py", line 1072, in 
put_block_blob_from_file
x_ms_lease_id)
File "c:\temp\script bundle\azure\storage\blob\blobservice.py", line 883, in 
put_blob
self._perform_request(request)
File "c:\temp\script bundle\azure\storage\storageclient.py", line 171, in 
_perform_request
resp = self._filter(request)
File "c:\temp\script bundle\azure\storage\storageclient.py", line 160, in 
_perform_request_worker
return self._httpclient.perform_request(request)
File "c:\temp\script bundle\azure\storage\_http\httpclient.py", line 181, in 
perform_request
self.send_request_body(connection, request.body)
File "c:\temp\script bundle\azure\storage\_http\httpclient.py", line 143, in 
send_request_body
connection.send(request_body)
File "c:\temp\script bundle\azure\storage\_http\requestsclient.py", line 81, 
in send
self.response = self.session.request(self.method, self.uri, data=request_body, 
headers=self.headers, timeout=self.timeout)
File "C:\pyhome\lib\site-packages\requests\sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "C:\pyhome\lib\site-packages\requests\sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "C:\pyhome\lib\site-packages\requests\adapters.py", line 426, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', timeout('timed 
out',))
Process returned with non-zero exit code 1

Any help or thought is appreciated!

I tried to reproduce your issue via copy your code and upload a dataset zip file include azure python library , but failed.

According to the error information, it seems to be just a network layer issue. Maybe try again later and it will works.

And per my experience, other suggestions as below.

  1. Check your storage account whether enabled Secure transfer required option in the Configuration tab. If so, please remove the protocol='http' code or change to https .
  2. According to the storage APIs you used, it's the old version 0.20.3 of Azure Storage Python SDK. You can upload a dataset zip file include new version 0.34.3 instead of the old one to try again.

Hope it helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM