2017-03-02 73 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