Revision 1 as of 2004-04-28 05:58:27
commited from SeaPIG with permission of author
Fast C XML-RPC server- 20-100x faster
|Deletions are marked like this.||Additions are marked like this.|
|Line 55:||Line 55:|
|* [http://sourceforge.net/projects/py-xmlrpc/ Fast C implementation of xmlrpc for python] (only for python version up to 2.2)||* [http://sourceforge.net/projects/py-xmlrpc/ Fast C implementation of xmlrpc for python] (only for python version up to 2.2) [http://www.xmlrpc.com/discuss/msgReader$1573 (more notes on it- apparently 20-100x faster!)]|
The page contents below were copied with permission of author (BrianDorsey) from [http://www.seapig.org/DocXMLRPCServer DocXMLRPCServer]. I'd like to rework the page to fit the form of WorkingWithTime, RssLibraries, etc.,. See also: XmlRpc -- LionKimbro DateTime(2004-04-28T05:58:27Z)
Here is a simple server which implements the above message procedure as well as a wait procedure. This server is based on the DocXMLRPCServer included with Python2.3; In Python2.2, use SimpleXMLRPCServer instead, and don't call server.register_introspection_functions().
1 # ExampleServer.py 2 import time 3 import socket 4 from DocXMLRPCServer import DocXMLRPCServer 5 6 class SimpleShareServer: 7 def message(self, msg): 8 """message('Print me!') => True 9 10 Log everything passed to this function""" 11 print time.asctime(), msg 12 return True 13 14 def wait(self, seconds): 15 """wait(5) => 5 16 17 Wait for a certain number of seconds before returning. 18 Returns the same number passed in.""" 19 print time.asctime(), "Waiting %s seconds" % seconds 20 time.sleep(seconds) 21 print time.asctime(), "Finished waiting %s seconds" % seconds 22 return seconds 23 24 25 if __name__ == '__main__': 26 server = DocXMLRPCServer(("", 8000), logRequests=0) 27 server.register_introspection_functions() 28 server.register_instance(SimpleShareServer()) 29 30 print time.asctime(), 'Application Starting.' 31 server.serve_forever() 32 print time.asctime(), 'Application Finishing.'
The benefit of using DocXMLRPCServer is that it automatically creates documentation for your XML-RPC server, just open a browser and head to http://localhost:8000 after starting the server.
Writing a client to call the wait function is left as an exercise for the reader.
[http://www.python.org/doc/current/lib/module-xmlrpclib.html xmlrpclib documentation]
[http://www.python.org/doc/current/lib/module-SimpleXMLRPCServer.html SimpleXMLRPCServer documentation]
[http://www.python.org/doc/current/lib/module-DocXMLRPCServer.html DocXMLRPCServer documentation]
- Also read the comments in both SimpleXMLRPCServer.py, and DocXMLRPCServer.py - they contain many examples of how to use the modules.
[http://sourceforge.net/projects/py-xmlrpc/ Fast C implementation of xmlrpc for python] (only for python version up to 2.2) [http://www.xmlrpc.com/discuss/msgReader$1573 (more notes on it- apparently 20-100x faster!)]
[http://xmlrpc-c.sourceforge.net/xmlrpc-howto/xmlrpc-howto.html Detailed XML-RPC how-to with examples in many languages ]