Je passe un appel de services Web à un service Web Microsoft CRM à l'aide de Python/suds/python-ntlm, et mon appel au service est blocage sur une lecture SSL. Le fournisseur de services CRM fournit à la fois un service de test et un service de production, et je peux très bien contacter le service de test (bien qu'il ne dispose pas de données utiles) mais le service principal ne fait que bloquer.La communication SSL Python se bloque lors de la lecture, puis une erreur 54 - connexion réinitialisée par l'homologue
C'est la trace de la pile, après avoir interrompu le processus:
;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffer.
INFO:root:Getting WSDL from file:///Users/crose/projects/aed/2366/crm/services/metadata.wsdl
DEBUG:suds.client:sending to (https://service.host/MSCrmServices/2007/MetadataService.asmx)
message:
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/crm/2007/WebServices" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns0:Body>
<ns1:Execute>
<ns1:Request xsi:type="ns1:RetrieveAttributeRequest">
<ns1:MetadataId>00000000-0000-0000-0000-000000000000</ns1:MetadataId>
<ns1:EntityLogicalName>opportunity</ns1:EntityLogicalName>
<ns1:LogicalName>new_typeofcontact</ns1:LogicalName>
<ns1:RetrieveAsIfPublished>false</ns1:RetrieveAsIfPublished>
</ns1:Request>
</ns1:Execute>
</ns0:Body>
</SOAP-ENV:Envelope>
DEBUG:suds.client:headers = {'SOAPAction': u'"http://schemas.microsoft.com/crm/2007/WebServices/Execute"', 'Content-Type': 'text/xml'}
DEBUG:suds.transport.http:sending:
URL:https://service.host/MSCrmServices/2007/MetadataService.asmx
HEADERS: {'SOAPAction': u'"http://schemas.microsoft.com/crm/2007/WebServices/Execute"', 'Content-Type': 'text/xml', 'Content-type': 'text/xml', 'Soapaction': u'"http://schemas.microsoft.com/crm/2007/WebServices/Execute"'}
MESSAGE:
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/crm/2007/WebServices" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns0:Body>
<ns1:Execute>
<ns1:Request xsi:type="ns1:RetrieveAttributeRequest">
<ns1:MetadataId>00000000-0000-0000-0000-000000000000</ns1:MetadataId>
<ns1:EntityLogicalName>opportunity</ns1:EntityLogicalName>
<ns1:LogicalName>new_typeofcontact</ns1:LogicalName>
<ns1:RetrieveAsIfPublished>false</ns1:RetrieveAsIfPublished>
</ns1:Request>
</ns1:Execute>
</ns0:Body>
</SOAP-ENV:Envelope>
C-c C-cTraceback (most recent call last):
File "sudstest2.py", line 40, in <module>
attr = metadata_client.service.Execute(mdRequest(*picklist))
File "/Users/crose/virtualenv/advanis/lib/python2.6/site-packages/suds/client.py", line 539, in __call__
return client.invoke(args, kwargs)
File "/Users/crose/virtualenv/advanis/lib/python2.6/site-packages/suds/client.py", line 598, in invoke
result = self.send(msg)
File "/Users/crose/virtualenv/advanis/lib/python2.6/site-packages/suds/client.py", line 623, in send
reply = transport.send(request)
File "/Users/crose/virtualenv/advanis/lib/python2.6/site-packages/suds/transport/https.py", line 64, in send
return HttpTransport.send(self, request)
File "/Users/crose/virtualenv/advanis/lib/python2.6/site-packages/suds/transport/http.py", line 77, in send
fp = self.u2open(u2request)
File "/Users/crose/virtualenv/advanis/lib/python2.6/site-packages/suds/transport/http.py", line 118, in u2open
return url.open(u2request, timeout=tm)
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/urllib2.py", line 397, in open
response = meth(req, response)
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/urllib2.py", line 510, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/urllib2.py", line 429, in error
result = self._call_chain(*args)
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/Users/crose/virtualenv/advanis/src/python-ntlm/ntlm/HTTPNtlmAuthHandler.py", line 96, in http_error_401
return self.http_error_authentication_required('www-authenticate', req, fp, headers)
File "/Users/crose/virtualenv/advanis/src/python-ntlm/ntlm/HTTPNtlmAuthHandler.py", line 35, in http_error_authentication_required
return self.retry_using_http_NTLM_auth(req, auth_header_field, None, headers)
File "/Users/crose/virtualenv/advanis/src/python-ntlm/ntlm/HTTPNtlmAuthHandler.py", line 80, in retry_using_http_NTLM_auth
response = h.getresponse()
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/httplib.py", line 986, in getresponse
response.begin()
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/httplib.py", line 391, in begin
version, status, reason = self._read_status()
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/httplib.py", line 349, in _read_status
line = self.fp.readline()
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/socket.py", line 397, in readline
data = recv(1)
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/ssl.py", line 96, in <lambda>
self.recv = lambda buflen=1024, flags=0: SSLSocket.recv(self, buflen, flags)
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/ssl.py", line 217, in recv
return self.read(buflen)
File "/usr/local/Cellar/python/2.6.5/lib/python2.6/ssl.py", line 136, in read
KeyboardInterrupt
Finalement, je reçois une erreur de connexion 54 - réinitialisation de la connexion par les pairs - de cela, après avoir attendu une bonne quantité de temps.
Quel est mon meilleur pari pour le débogage?
J'ai un problème très similaire. Une réponse à cette question serait géniale ... – Michael
Quelle version de python? Pas sûr que ce soit pertinent, mais avant 2.6 il y avait un bogue dans la bibliothèque ssl qui a désactivé le timeout tout en faisant la poignée de main ssl. – drevicko