David Hirschfield wrote:
<cut>
> My question was whether this is allowed? Can two calls be made via the 
> same ServerProxy instance while a request is already underway?
> 
> Clearer?
> -Dave
> 
<cut>

Much, and my preliminary answer is, I have no clue :-)
But knowing that python will throw an exceptions when something is not 
allowed and that we can analyze if the logic of the program breaks we do 
can build a test case!

I've taken the opportunity, but I might be as wrong was I am right (and 
still won't know which one it was):

So, I expect that when something un-allowed happens it will throw an 
exception and otherwise that the workflow on the server should resemble 
the work flow on the client:

So i created an async server with only one function (which is even worse 
  then your question):
def doSomething(self,threadID):
        randomWait= random.randrange(0,10)
        time.sleep(randomWait)
        print("Thread %s has slept for %s seconds" % threadID,randomWait))
        returnValue = "Thread %s has slept for %s seconds" % 
(threadID,randomWait)
        return returnValue

and a threaded client:
class testThread(threading.Thread):
     def run(self):
         xmlrpclib.server = xmlrpclib.ServerProxy("http://localhost:8080";)
         x=xmlrpclib.server
         print(x.doSomething(self.getName()))

for i in range(100):
     testThread().start()

So when I run that I except that the output on the server is the same as 
the one on the client with an error margin within the second range 
(which would indicate that a certain thread has been scheduled a little 
earlier then the other), guess what the output of the two was?

Well I say this much, most of them where in sync (within the error 
margin) so I conclude that your question is answered with , yes you can 
have a call when another one is processed without intervening with each 
other( if you want that).

-- 
mph
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to