<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
<link rel=
"STYLESHEET" href=
"lib.css" type='text/css'
/>
<link rel=
"SHORTCUT ICON" href=
"../icons/pyfav.png" type=
"image/png" />
<link rel='start' href='../index.html' title='Python Documentation Index'
/>
<link rel=
"first" href=
"lib.html" title='Python Library Reference'
/>
<link rel='contents' href='contents.html'
title=
"Contents" />
<link rel='index' href='genindex.html' title='Index'
/>
<link rel='last' href='about.html' title='About this document...'
/>
<link rel='help' href='about.html' title='About this document...'
/>
<link rel=
"next" href=
"node564.html" />
<link rel=
"prev" href=
"module-SimpleXMLRPCServer.html" />
<link rel=
"parent" href=
"module-SimpleXMLRPCServer.html" />
<link rel=
"next" href=
"node564.html" />
<meta name='aesop' content='information'
/>
<title>11.23.1 SimpleXMLRPCServer Objects
</title>
<div id='top-navigation-panel' xml:id='top-navigation-panel'
>
<table align=
"center" width=
"100%" cellpadding=
"0" cellspacing=
"2">
<td class='online-navigation'
><a rel=
"prev" title=
"11.23 SimpleXMLRPCServer "
href=
"module-SimpleXMLRPCServer.html"><img src='../icons/previous.png'
border='
0' height='
32' alt='Previous Page' width='
32'
/></A></td>
<td class='online-navigation'
><a rel=
"parent" title=
"11.23 SimpleXMLRPCServer "
href=
"module-SimpleXMLRPCServer.html"><img src='../icons/up.png'
border='
0' height='
32' alt='Up One Level' width='
32'
/></A></td>
<td class='online-navigation'
><a rel=
"next" title=
"11.23.2 CGIXMLRPCRequestHandler"
href=
"node564.html"><img src='../icons/next.png'
border='
0' height='
32' alt='Next Page' width='
32'
/></A></td>
<td align=
"center" width=
"100%">Python Library Reference
</td>
<td class='online-navigation'
><a rel=
"contents" title=
"Table of Contents"
href=
"contents.html"><img src='../icons/contents.png'
border='
0' height='
32' alt='Contents' width='
32'
/></A></td>
<td class='online-navigation'
><a href=
"modindex.html" title=
"Module Index"><img src='../icons/modules.png'
border='
0' height='
32' alt='Module Index' width='
32'
/></a></td>
<td class='online-navigation'
><a rel=
"index" title=
"Index"
href=
"genindex.html"><img src='../icons/index.png'
border='
0' height='
32' alt='Index' width='
32'
/></A></td>
<div class='online-navigation'
>
<b class=
"navlabel">Previous:
</b>
<a class=
"sectref" rel=
"prev" href=
"module-SimpleXMLRPCServer.html">11.23 SimpleXMLRPCServer
</A>
<b class=
"navlabel">Up:
</b>
<a class=
"sectref" rel=
"parent" href=
"module-SimpleXMLRPCServer.html">11.23 SimpleXMLRPCServer
</A>
<b class=
"navlabel">Next:
</b>
<a class=
"sectref" rel=
"next" href=
"node564.html">11.23.2 CGIXMLRPCRequestHandler
</A>
<!--End of Navigation Panel-->
<H2><A NAME=
"SECTION00132310000000000000000"></A><A NAME=
"simple-xmlrpc-servers"></A>
11.23.1 SimpleXMLRPCServer Objects
The
<tt class=
"class">SimpleXMLRPCServer
</tt> class is based on
<tt class=
"class">SocketServer.TCPServer
</tt> and provides a means of creating
simple, stand alone XML-RPC servers.
<dl><dt><table cellpadding=
"0" cellspacing=
"0"><tr valign=
"baseline">
<td><nobr><b><tt id='l2h-
3723' xml:id='l2h-
3723'
class=
"method">register_function
</tt></b>(
</nobr></td>
<td><var>function
</var><big>[
</big><var>,
name
</var><big>]
</big><var></var>)
</td></tr></table></dt>
Register a function that can respond to XML-RPC requests. If
<var>name
</var> is given, it will be the method name associated with
<var>function
</var>, otherwise
<code><var>function
</var>.__name__
</code> will be
used.
<var>name
</var> can be either a normal or Unicode string, and may
contain characters not legal in Python identifiers, including the
<dl><dt><table cellpadding=
"0" cellspacing=
"0"><tr valign=
"baseline">
<td><nobr><b><tt id='l2h-
3724' xml:id='l2h-
3724'
class=
"method">register_instance
</tt></b>(
</nobr></td>
<td><var>instance
</var><big>[
</big><var>,
allow_dotted_names
</var><big>]
</big><var></var>)
</td></tr></table></dt>
Register an object which is used to expose method names which have
not been registered using
<tt class=
"method">register_function()
</tt>. If
<var>instance
</var> contains a
<tt class=
"method">_dispatch()
</tt> method, it is called
with the requested method name and the parameters from the request. Its
API is
<code>def
<tt class=
"method">_dispatch
</tt>(self, method, params)
</code> (note that
<var>params
</var> does not represent a variable argument list). If it calls an
underlying function to perform its task, that function is called as
<code>func(*params)
</code>, expanding the parameter list.
The return value from
<tt class=
"method">_dispatch()
</tt> is returned to the client as
<var>instance
</var> does not have a
<tt class=
"method">_dispatch()
</tt> method, it is
searched for an attribute matching the name of the requested method.
If the optional
<var>allow_dotted_names
</var> argument is true and the
instance does not have a
<tt class=
"method">_dispatch()
</tt> method, then
if the requested method name contains periods, each component of the
method name is searched for individually, with the effect that a
simple hierarchical search is performed. The value found from this
search is then called with the parameters from the request, and the
return value is passed back to the client.
<div class=
"warning"><b class=
"label">Warning:
</b>
Enabling the
<var>allow_dotted_names
</var> option allows intruders to access
your module's global variables and may allow intruders to execute
arbitrary code on your machine. Only use this option on a secure,
<span class=
"versionnote">Changed in version
2.3.5,
2.4.1:
<var>allow_dotted_names
</var> was added to plug a security hole;
prior versions are insecure.
</span>
<dl><dt><table cellpadding=
"0" cellspacing=
"0"><tr valign=
"baseline">
<td><nobr><b><tt id='l2h-
3725' xml:id='l2h-
3725'
class=
"method">register_introspection_functions
</tt></b>(
</nobr></td>
<td><var></var>)
</td></tr></table></dt>
Registers the XML-RPC introspection functions
<code>system.listMethods
</code>,
<code>system.methodHelp
</code> and
<code>system.methodSignature
</code>.
<span class=
"versionnote">New in version
2.3.
</span>
<dl><dt><table cellpadding=
"0" cellspacing=
"0"><tr valign=
"baseline">
<td><nobr><b><tt id='l2h-
3726' xml:id='l2h-
3726'
class=
"method">register_multicall_functions
</tt></b>(
</nobr></td>
<td><var></var>)
</td></tr></table></dt>
Registers the XML-RPC multicall function system.multicall.
<div class=
"verbatim"><pre>
def div(self, x, y) : return x // y
server = SimpleXMLRPCServer((
"localhost",
8000))
server.register_function(pow)
server.register_function(lambda x,y: x+y, 'add')
server.register_introspection_functions()
server.register_instance(MyFuncs())
<div class='online-navigation'
>
<table align=
"center" width=
"100%" cellpadding=
"0" cellspacing=
"2">
<td class='online-navigation'
><a rel=
"prev" title=
"11.23 SimpleXMLRPCServer "
href=
"module-SimpleXMLRPCServer.html"><img src='../icons/previous.png'
border='
0' height='
32' alt='Previous Page' width='
32'
/></A></td>
<td class='online-navigation'
><a rel=
"parent" title=
"11.23 SimpleXMLRPCServer "
href=
"module-SimpleXMLRPCServer.html"><img src='../icons/up.png'
border='
0' height='
32' alt='Up One Level' width='
32'
/></A></td>
<td class='online-navigation'
><a rel=
"next" title=
"11.23.2 CGIXMLRPCRequestHandler"
href=
"node564.html"><img src='../icons/next.png'
border='
0' height='
32' alt='Next Page' width='
32'
/></A></td>
<td align=
"center" width=
"100%">Python Library Reference
</td>
<td class='online-navigation'
><a rel=
"contents" title=
"Table of Contents"
href=
"contents.html"><img src='../icons/contents.png'
border='
0' height='
32' alt='Contents' width='
32'
/></A></td>
<td class='online-navigation'
><a href=
"modindex.html" title=
"Module Index"><img src='../icons/modules.png'
border='
0' height='
32' alt='Module Index' width='
32'
/></a></td>
<td class='online-navigation'
><a rel=
"index" title=
"Index"
href=
"genindex.html"><img src='../icons/index.png'
border='
0' height='
32' alt='Index' width='
32'
/></A></td>
<div class='online-navigation'
>
<b class=
"navlabel">Previous:
</b>
<a class=
"sectref" rel=
"prev" href=
"module-SimpleXMLRPCServer.html">11.23 SimpleXMLRPCServer
</A>
<b class=
"navlabel">Up:
</b>
<a class=
"sectref" rel=
"parent" href=
"module-SimpleXMLRPCServer.html">11.23 SimpleXMLRPCServer
</A>
<b class=
"navlabel">Next:
</b>
<a class=
"sectref" rel=
"next" href=
"node564.html">11.23.2 CGIXMLRPCRequestHandler
</A>
<span class=
"release-info">Release
2.4.2, documentation updated on
28 September
2005.
</span>
<!--End of Navigation Panel-->
See
<i><a href=
"about.html">About this document...
</a></i> for information on suggesting changes.