Make the example server code clearer; add the corresponding example client. [Bugfix candidate]

This commit is contained in:
Andrew M. Kuchling 2004-12-01 18:34:11 +00:00
parent 9cc5cb7c4b
commit ab807e8a0d
1 changed files with 36 additions and 5 deletions

View File

@ -88,18 +88,49 @@ simple, stand alone XML-RPC servers.
Example: Example:
\begin{verbatim} \begin{verbatim}
class MyFuncs: from SimpleXMLRPCServer import SimpleXMLRPCServer
def div(self, x, y) : return x // y
# Create server
server = SimpleXMLRPCServer(("localhost", 8000)) server = SimpleXMLRPCServer(("localhost", 8000))
server.register_function(pow)
server.register_function(lambda x,y: x+y, 'add')
server.register_introspection_functions() server.register_introspection_functions()
# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
server.register_function(pow)
# Register a function under a different name
def adder_function(x,y):
return x + y
server.register_function(adder_function, 'add')
# Register an instance; all the methods of the instance are
# published as XML-RPC methods (in this case, just 'div').
class MyFuncs:
def div(self, x, y):
return x // y
server.register_instance(MyFuncs()) server.register_instance(MyFuncs())
# Run the server's main loop
server.serve_forever() server.serve_forever()
\end{verbatim} \end{verbatim}
The following client code will call the methods made available by
the preceding server:
\begin{verbatim}
import xmlrpclib
s = xmlrpclib.Server('http://localhost:8000')
print s.pow(2,3) # Returns 2**3 = 8
print s.add(2,3) # Returns 5
print s.div(5,2) # Returns 5//2 = 2
# Print list of available methods
print s.system.listMethods()
\end{verbatim}
\subsection{CGIXMLRPCRequestHandler} \subsection{CGIXMLRPCRequestHandler}
The \class{CGIXMLRPCRequestHandler} class can be used to The \class{CGIXMLRPCRequestHandler} class can be used to