Right way to define methods to SimpleXMLRPCServer?

Diez B. Roggisch deetsNOSPAM at web.de
Thu Sep 2 17:37:02 EDT 2004


> When I call a method on the server with no args _dispatch is called, and
> the server prints this:
> 
>     {'args': ((),), 'kwds': {}}
> 
> Seems to me like it has one nesting level too many in the args tuple.
> Shouldn't it be ()?  Is this a bug or am I misinterpreting something?

Calling a function without any args always yields an empty tuple - like
this:

>>> def foo(*args): print args
>>> foo()
()
>>>


Looking at SimpleXMLRPCServer one sees this:

        params, method = xmlrpclib.loads(data)
        # generate response
        try:
            if dispatch_method is not None:
                response = dispatch_method(method, params)


So the argument list is the second argument, which is probably the empty
tuple- that explains your observations.

Looking into the docs, you see that dispatch is supposed to have this
signature:

def _dispatch(self, method, params):

No * here, as well as keywords. Then things are more clear :)



-- 
Regards,

Diez B. Roggisch



More information about the Python-list mailing list