debugging xmlrpc servers

  • Thread starter alan dot ezust at gmail dot com
  • Start date
A

alan dot ezust at gmail dot com

Problems with XMLRPC

I have an xmlrpc server with a method called results() which returns an
XML
message.

I've been able to use this function without problems when I had only
one client talking to one server. I have recently introduced a P2P
aspect to this process and now I have servers calling each other's
methods all the time.

I am running into some bugs which I am unable to debug.

I am using http://rpdb.digitalpeers.com/Download.htm

As per the instructions, I called rpdb.set_trace() right before calling
server.serve_forever().

Then I ran the server, and ran the client. At a certain point, the
client
asks the server for the results(), and instead of getting a proper
result, I
get this exception:

/usr/lib/python2.3/xmlrpclib.py in close(self=<xmlrpclib.Unmarshaller
instance>)
743 raise ResponseError()
744 if self._type == "fault":
745 raise Fault(**self._stack[0])
746 return tuple(self._stack)
747
global Fault = <class xmlrpclib.Fault>, self = <xmlrpclib.Unmarshaller
instance>, self._stack = [{'faultCode': 1, 'faultString':
'exceptions.ValueError:too many values to unpack'}]

Fault:
args = ()
faultCode = 1
faultString = 'exceptions.ValueError:too many values to unpack'

I thought that my rpdb problems were related to the fact that I was
multiply-inheriting from SocketServer.ThreadingMixIn (which I believe
starts
a new thread for each incoming request), so I changed this:
class QueryServer(SocketServer.ThreadingMixIn,
SimpleXMLRPCServer.SimpleXMLRPCServer):
to this:
class QueryServer(SimpleXMLRPCServer.SimpleXMLRPCServer):

I am still unable to set a breakpoint in the results() method. I'd
really
like to trace through it so I can figure out why I am getting this
weird
exception. Any ideas?
 
D

Diez B. Roggisch

I have difficulties understanding your probelem - is your own method giving
you trouble (and the 'exceptions.ValueError:too many values to unpack')
error or is it the remote debugger? Or do you simply not understand the
error message itself.

The error itself is raised in cases like this:

a,b,c = (1,2,3,4)

Now to see where that sort of statement fails, it would help if you'd give
us the actual code for your result-method.
 
A

alan dot ezust at gmail dot com

Understandable - i had difficulties understanding my problem too!

I don't really understand why I got that error message before - I
believe it was due to the fact that some other exception was being
raised inside results().

Anyway, the solution was to call rpdb.set_trace() inside the actual
method which was being called by xmlrpc, and setting the breakpoint to
be the statement following that line (rather than the function itself).
cheers --alan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,754
Messages
2,569,525
Members
44,997
Latest member
mileyka

Latest Threads

Top