XML-RPC server via xinetd

Fredrik Lundh fredrik at pythonware.com
Mon Apr 17 06:42:00 EDT 2006


Nick Craig-Wood wrote:

> Look at /usr/lib/python2.4/SimpleXMLRPCServer.py (adjust as per your
> distro) and in particular the definition of the CGIXMLRPCRequestHandler class.
>
> That looks as thought it almost, or maybe completely, does what you
> want, ie an XMLRPC subclass which reads from stdin and writes to
> stdout.

except that if the OP's expecting the other end to use an ordinary XML-RPC
library, he needs to implement some minimal HTTP handling as well.

    import sys
    import mimetools, xmlrpclib

    command = sys.stdin.readline()
    # optional: check command syntax (POST url HTTP/1.X)

    headers = mimetools.Message(sys.stdin)
    # optional: check content-type etc

    bytes = int(headers.get("content-length", 0))
    # optional: check request size, etc

    params, method = xmlrpclib.loads(sys.stdin.read(bytes))

    # handle the method
    result = ...

    # marshaller expects a tuple
    result = (result, )

    response = xmlrpclib.dumps(result, methodresponse=1)

    print "HTTP/1.0 200 OK"
    print "Content-Type: text/xml"
    print "Content-Length:", len(response)
    print
    print response

(based on code from http://effbot.org/zone/xmlrpc-cgi.htm )

</F>






More information about the Python-list mailing list