Opening up IDLE and importing the suds Client, I can create a client by:
c = Client('http://blah/Core.svc?wsdl')
Subsequently calling:
c2 = Client('http://blah/Core.svc?wsdl')
will get me a TypeNotFound
error being thrown, naming a class in the wsdl file.
I have tried:
timeout = 5 # and then waiting
cache = None
But the same error occurs. I don't mind if I cannot use the first instance, but how do I get hold of the 2nd?
I am writing tests, which will be run by a single instance of PySys, but which individually don't share data.
As an aside, when I quit() IDLE after this, it asks if I want to kill the running process, so am I correct in assuming creating a Client fires off a thread?
The error I get is:
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
c1 = Client('http://localhost:8090/Service/Core.svc?wsdl')
File "build\bdist.win-amd64\egg\suds\client.py", line 119, in __init__
sd = ServiceDefinition(self.wsdl, s)
File "build\bdist.win-amd64\egg\suds\servicedefinition.py", line 58, in __init__
self.paramtypes()
File "build\bdist.win-amd64\egg\suds\servicedefinition.py", line 137, in paramtypes
item = (pd[1], pd[1].resolve())
File "build\bdist.win-amd64\egg\suds\xsd\sxbasic.py", line 63, in resolve
raise TypeNotFound(qref)
TypeNotFound: Type not found: '(ClassName, http://schemas.datacontract.org/4004/07/Class.Namespace, )'
c.last_received() and c.last_sent() both are empty.
Going further, I looked at the log of my IIS and found that, whenever I call Client(url) for the first time in a python instance, I get:
GET /Service/Core.svc wsdl 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd0 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd2 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd1 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd3 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd2 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd1 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd3 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd2 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd1 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd3 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd2 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd3 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd1 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd2 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd3 8090 - ::1 Python-urllib/2.6
But subsequent calls from within the same python instance give me:
GET /Service/Core.svc wsdl 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd0 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd2 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd3 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd1 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd2 8090 - ::1 Python-urllib/2.6
GET /Service/Core.svc xsd=xsd3 8090 - ::1 Python-urllib/2.6
The size of the response is the same each time a certain file is requested.