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.