Python XMLRPC question
prasanna
prasanna at ix.netcom.com
Thu Oct 15 12:45:02 EDT 2009
Thanks a bunch. Qill give it a shot.
--p
On Oct 14, 8:18 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:
> En Wed, 14 Oct 2009 22:08:09 -0300,prasanna<prasa... 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