Keyword args to SimpleXMLRPCServer
Sean DiZazzo
half.italian at gmail.com
Mon Dec 17 19:21:13 EST 2007
On Dec 17, 4:13 pm, Sean DiZazzo <half.ital... at gmail.com> wrote:
> Why is the following not working? Is there any way to get keyword
> arguments working with exposed XMLRPC functions?
>
> ~~~~~~~~~~~~~~~~ server.py
> import SocketServer
> from SimpleXMLRPCServer import
> SimpleXMLRPCServer,SimpleXMLRPCRequestHandler
>
> # Threaded mix-in
> class
> AsyncXMLRPCServer(SocketServer.ThreadingMixIn,SimpleXMLRPCServer):
> pass
>
> class XMLFunctions(object):
> def returnArgs(*args, **kwargs):
> return kwargs.items()
>
> # Instantiate and bind to localhost:1234
> server = AsyncXMLRPCServer(('', 8080), SimpleXMLRPCRequestHandler)
>
> # Register example object instance
> server.register_instance(XMLFunctions())
>
> # run!
> server.serve_forever()
>
> ~~~~~~~~~~~~~~~~ client.py
> from xmlrpclib import ServerProxy, Error
>
> server = ServerProxy("http://localhost:8080", allow_none=1) # local
> server
>
> try:
> print server.returnArgs("foo", bar="bar", baz="baz")
> except Error, v:
> print "ERROR", v
>
> [seans-imac:~/Desktop/] halfitalian% ./client.py
> Traceback (most recent call last):
> File "./XMLRPC_client.py", line 9, in <module>
> print server.returnArgs("foo", bar="bar", baz="baz")
> TypeError: __call__() got an unexpected keyword argument 'bar'
>
> ~Sean
PS. The same thing happens if you don't use **kwargs...
...
class XMLFunctions(object):
def returnArgs(foo, bar=None, baz=None):
return foo, bar, baz
...
More information about the Python-list
mailing list