Python XMLRPC question
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Wed Oct 14 23:18:24 EDT 2009
En Wed, 14 Oct 2009 22:08:09 -0300, prasanna <prasanna at ix.netcom.com>
escribió:
> Out of curiosity--one more thing I haven't yet figured out, is there a
> xmlrpc command I can send that stops or restarts the server?
If you're using Python 2.6, the easiest way is to register its shutdown()
method. Note that it *must* be called from a separate thread (just inherit
from ForkingMixIn)
On earlier versions, overwrite the serve_forever loop (so it reads `while
not self._quit: ...`) and add a shutdown() method that sets self._quit to
True. You'll need to call shutdown twice in that case.
=== begin xmlrpcshutdown.py ===
import sys
def server():
from SocketServer import ThreadingMixIn
from SimpleXMLRPCServer import SimpleXMLRPCServer
# ThreadingMixIn must be included when publishing
# the shutdown method
class MyXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer):
pass
print 'Running XML-RPC server on port 8000'
server = MyXMLRPCServer(("localhost", 8000),
logRequests=False, allow_none=True)
# allow_none=True because of shutdown
server.register_function(lambda x,y: x+y, 'add')
server.register_function(server.shutdown)
server.serve_forever()
def client():
from xmlrpclib import ServerProxy
print 'Connecting to XML-RPC server on port 8000'
server = ServerProxy("http://localhost:8000")
print "2+3=", server.add(2, 3)
print "asking server to shut down"
server.shutdown()
if sys.argv[1]=="server": server()
elif sys.argv[1]=="client": client()
=== end xmlrpcshutdown.py ===
C:\TEMP>start python xmlrpcshutdown.py server
C:\TEMP>python xmlrpcshutdown.py client
Connecting to XML-RPC server on port 8000
2+3= 5
asking server to shut down
C:\TEMP>
--
Gabriel Genellina
More information about the Python-list
mailing list