2017-03-02 57 views
1

我在使用Raspberian下的Python設置Raspberry 3/Sense Hat組合與Azure存儲表服務之間的連接時存在一些問題。繼https://docs.microsoft.com/en-us/azure/storage/storage-python-how-to-use-table-storage的教程中,我使用的代碼是(myaccountkey插入,當然):使用Raspbian下的Python在Azure存儲上訪問表服務

from sense_hat import SenseHat 
from azure.storage.table import TableService 

sense = SenseHat() 

table_service = TableService(account_name='sensehat', 
         account_key=<myaccountkey>) 
table_name = 'sensehatdata' 
table_service.create_table(table_name, False) 

錯誤回溯是:

Traceback (most recent call last): 
    File "/home/pi/senseHat2Azure.py", line 22, in <module> 
table_service.create_table(table_name, False) 
    File "/usr/local/lib/python2.7/dist-packages/azure/storage/table/tableservice.py", line 281, in create_table 
self._perform_request(request) 
    File "/usr/local/lib/python2.7/dist-packages/azure/storage/storageclient.py", line 171, in _perform_request 
resp = self._filter(request) 
    File "/usr/local/lib/python2.7/dist-packages/azure/storage/table/tableservice.py", line 667, in _perform_request_worker 
return self._httpclient.perform_request(request) 
    File "/usr/local/lib/python2.7/dist-packages/azure/storage/_http/httpclient.py", line 181, in perform_request 
self.send_request_body(connection, request.body) 
    File "/usr/local/lib/python2.7/dist-packages/azure/storage/_http/httpclient.py", line 143, in send_request_body 
connection.send(request_body) 
    File "/usr/local/lib/python2.7/dist-packages/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 "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 457, in request 
resp = self.send(prep, **send_kwargs) 
    File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 569, in send 
r = adapter.send(request, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 407, in send 
raise ConnectionError(err, request=request) 
ConnectionError: ('Connection aborted.', gaierror(-2, 'Name or service not known')) 

一些細節到我的存儲賬戶:

  • 設置爲通用目的,而不是blob
  • 西歐

非常感謝您的任何想法。

+0

是您的存儲帳戶名爲'sensehat'? – 4c74356b41

+0

另一件事....存儲帳戶的冗餘類型是什麼?是ZRS還是Premium LRS? –

+0

都是:賬戶名稱是'sensehat',複製是'區域冗餘存儲(ZRS)' – noteven2degrees

回答

1

您收到此錯誤的原因是因爲您的存儲帳戶的冗餘類型。使用ZRS冗餘類型的存儲帳戶僅支持blob,不支持表和隊列。

從博客中宣佈this

正如你所看到的,這些選項提供了耐用性和 可用性選項的連續性。 ZRS適用於LRS和GRS,其耐久性和價格爲 。 ZRS通過2到3個 設施存儲您的數據的3個副本。它旨在將所有3個副本保留在單個 區域內,但可能跨越兩個區域。 ZRS目前僅支持 塊blob。 ZRS允許客戶以比單一設施可提供LRS更高的耐用性存儲斑點 。 ZRS帳戶目前沒有啓用 指標或記錄功能。

由於您不可能更改ZRS和其他(LRS,GRS,RAGRS)之間的冗餘類型,您唯一的選擇是創建一個新的存儲帳戶。創建一個標準存儲帳戶,並選擇冗餘類型作爲以下之一:LRS,GRS或RAGRS。當您使用該存儲帳戶時,您不會看到此錯誤。

+0

啊,非常有趣。是的,這是問題。爲了測試目的,我改爲LRS,並且工作順利。非常感謝你! – noteven2degrees