2014-08-27 105 views
2

我在设置从Python脚本到Azure服务总线的连接时遇到问题。 C#中的类似代码(在Windows上)运行良好。Python和Azure服务总线

from azure.servicebus import * 

AZURE_SERVICEBUS_NAMESPACE='blablabla.servicebus.windows.net' 
AZURE_SERVICEBUS_ISSUER='RootManageSharedAccessKey' 
AZURE_SERVICEBUS_ACCESS_KEY='sdkfjlkewjrlwerjlewrjlewrjfjflsdkfjew3=' 

bus_service = ServiceBusService(service_namespace=AZURE_SERVICEBUS_NAMESPACE, account_key=AZURE_SERVICEBUS_ACCESS_KEY, issuer=AZURE_SERVICEBUS_ISSUER) 

bus_service.create_queue('taskqueue') 

这将导致以下的输出:

Traceback (most recent call last): File "createqueue.py", line 9, in bus_service.create_queue('taskqueue') File "/usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservice.py", line 143, in create_queue request.headers = self._update_service_bus_header(request) File "/usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservice.py", line 860, in _update_service_bus_header ('Authorization', self._sign_service_bus_request(request))) File "/usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservice.py", line 868, in _sign_service_bus_request self._get_token(request.host, request.path) + '"' File "/usr/local/lib/python2.7/dist-packages/azure/servicebus/servicebusservice.py", line 908, in _get_token resp = self._httpclient.perform_request(request) File "/usr/local/lib/python2.7/dist-packages/azure/http/httpclient.py", line 191, in perform_request self.send_request_headers(connection, request.headers) File "/usr/local/lib/python2.7/dist-packages/azure/http/httpclient.py", line 170, in send_request_headers connection.endheaders() File "/usr/lib/python2.7/httplib.py", line 958, in endheaders self._send_output(message_body) File "/usr/lib/python2.7/httplib.py", line 818, in _send_output self.send(msg) File "/usr/lib/python2.7/httplib.py", line 780, in send self.connect() File "/usr/lib/python2.7/httplib.py", line 1161, in connect self.timeout, self.source_address) File "/usr/lib/python2.7/socket.py", line 553, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): socket.gaierror: [Errno -2] Name or service not known

这是怎么回事错在这里?

感谢

+0

您正在使用哪个版本的Python SDK,以及您何时创建了SB命名空间? – BrentDaCodeMonkey 2014-08-27 15:02:32

+0

好问题:不知道,因为我刚刚2天前就拉起了pip软件包。我还用Windows上的Python进行了测试,SDK使用WebInstaller从MSDN中提取。同样的结果。奇怪我有一个工作脚本创建一个blob存储容器。我还测试了一个预先配置好的队列,并且只写了一条消息。这也会导致相同的错误行为。 – mvhoorn 2014-08-29 05:55:29

+0

我有同样的问题,没有解决方案。不是从Windows机器工作,也不是使用Python的Linux机器,而是与.NET一起工作。 – vvucetic 2014-08-29 14:15:55

回答

0
AZURE_SERVICEBUS_NAMESPACE='blablabla' 

你不需要指定命名空间的完整的URL。

+0

这也是我的想法,不管有没有命名空间,结果都是一样的。我也运行了一个创建blob存储容器的python脚本,它正在工作(无论是否添加URL)。 – mvhoorn 2014-08-29 05:48:34

+0

您使用SAS还是ACS? – TheDude 2014-08-29 17:01:12

+0

SAS。请参阅使用访问密钥。再次说明:同样的概念在C#/ .NET中完美无缺。 – mvhoorn 2014-08-31 14:41:25

0

检查您在microsift上与servicebus服务的连接。 我有同样的问题,并与wlan0连接问题 - 我失去了我的IP分配的DHCP服务器。 或者您的DNS无法正常工作。