2012-06-12 6 views
2

Essayez d'exécuter l'exemple Hello World pour mettre quelque chose dans la file d'attente, créez une file d'attente ... chaque fois que j'appelle azure, j'obtiens une erreur.impossible d'appeler Azure Service Bus à partir de Python

Voici le code:

from azure.servicebus import * 

bus_service = ServiceBusService(service_namespace='testtest', account_key='my_access_token', issuer='my_issuer') 
bus_service.create_topic('mytopic') 

Voici l'erreur que je reviens:

$ /c/Python27/python pythontest.py 
Traceback (most recent call last): 
    File "pythontest.py", line 4, in <module> 
    bus_service.create_topic('mytopic') 
    File "c:\Python27\lib\site-packages\azure\servicebus\servicebusservice.py", line 1 
42, in create_topic 
    request.headers = _update_service_bus_header(request, self.account_key, self.iss 
uer) 
    File "c:\Python27\lib\site-packages\azure\servicebus\__init__.py", line 185, in _u 
pdate_service_bus_header 
    request.headers.append(('Authorization', _sign_service_bus_request(request, acco 
unt_key, issuer))) 
    File "c:\Python27\lib\site-packages\azure\servicebus\__init__.py", line 192, in _s 
ign_service_bus_request 
    return 'WRAP access_token="' + _get_token(request, account_key, issuer) + '"' 
    File "c:\Python27\lib\site-packages\azure\servicebus\__init__.py", line 233, in _g 
et_token 
    connection.send(request_body) 
    File "c:\Python27\lib\site-packages\azure\http\winhttp.py", line 313, in send 
    self._httprequest.send(request_body) 
    File "c:\Python27\lib\site-packages\azure\http\winhttp.py", line 198, in send 
    ctypes.memmove(safearray.pvdata, request, len(request)) 
WindowsError: exception: access violation writing 0x0000000000000000 

Il me donne toujours la même erreur si je mets quelque chose sur une file d'attente ou de créer une file d'attente, créer un sujet, envoyer un message à un sujet, etc.

des idées?

+0

lol, miniBSOD. Je pense que personne ne vous aidera, sauf le support technique Microsoft. – Denis

Répondre

0

Est-ce le code exact que vous utilisez? Au moins la account_key n'est pas juste, il doit être au format base64

bus_service = ServiceBusService(service_namespace='testtest', account_key='my_access_token', issuer='my_issuer') 
+0

non J'ai retiré la clé de compte et l'émetteur. J'ai créé plusieurs espaces de noms et créé plusieurs sujets et essayé d'envoyer des messages en utilisant les différentes clés de compte et aucun d'entre eux ne fonctionne. Je pense que le problème est avec les autorisations du côté azur. – user1363644

+0

Pourriez-vous essayer account_name = 'weidongtestservicebus2' et account_key = 'LNkJyAIfeYlGyr3A8Wa7bwQovZ9b1/ZdOEtDr5bhxo0 =' et issuer = 'propriétaire'? Si cela fonctionne pour vous, c'est peut-être le problème du compte de stockage. Quelle version python utilisez-vous? –

0

Ceci est un problème avec la bibliothèque d'azur lorsqu'il est utilisé à partir de 64 bits Python.

Les changements pour le faire fonctionner sont petits, donc je les ai énumérés ici pour vous. Le correctif sera bientôt envoyé à github + pypi.

Effectuez les modifications suivantes d'azur/http/winhttp.py:

Ajouter c_size_t à la déclaration d'importation

from ctypes import c_void_p, c_long, c_ulong, c_longlong, c_ulonglong, c_short, c_ushort, c_wchar_p, c_byte, c_size_t 

Remplacer CoInitialize (0) avec

CoInitialize(None) 

Remplacer le Com related API section avec ce

_ole32 = oledll.ole32 
_oleaut32 = WinDLL('oleaut32') 
_CLSIDFromString = _ole32.CLSIDFromString 
_CoInitialize = _ole32.CoInitialize 
_CoInitialize.argtypes = [c_void_p] 

_CoCreateInstance = _ole32.CoCreateInstance 

_SysAllocString = _oleaut32.SysAllocString 
_SysAllocString.restype = c_void_p 
_SysAllocString.argtypes = [c_wchar_p] 

_SysFreeString = _oleaut32.SysFreeString 
_SysFreeString.argtypes = [c_void_p] 

_SafeArrayDestroy = _oleaut32.SafeArrayDestroy 
_SafeArrayDestroy.argtypes = [c_void_p] 

_CoTaskMemAlloc = _ole32.CoTaskMemAlloc 
_CoTaskMemAlloc.restype = c_void_p 
_CoTaskMemAlloc.argtypes = [c_size_t] 
Questions connexes