Ejemplo XML-RPC en python

Posted on dom 23 marzo 2008 in XML-RPC,Python • 1 min read

XML-RPC permite crear un webservice que recibe unos parámetros y devuelve un resultado. Es como una función pero los datos viajan a través de la red.

El ejemplo es un webservice que recibe un valor y devuelve el doble de ese valor. Algo sencillo.

El servidor:

#Se importa el módulo XMLRPC
from SimpleXMLRPCServer import SimpleXMLRPCServer
#Se asocia a un puerto en este caso 4242
s = SimpleXMLRPCServer(("", 4242))
#La función que toma x y devuelve el doble de x.
def twice(x):
return x*2
#se registra la función
s.register_function(twice)
#se inicia el servidor
s.serve_forever()

El cliente:

#Se importa el módulo ServerProxy de xmlrpclib.
from xmlrpclib import ServerProxy
#Se conecta al equipo por el puerto 4242
s = ServerProxy('http://localhost:4242')
#Se llama a la función pasandole x y devuelve el doble de x
s.twice(2)
4
s.twice(3)
6
s.twice(15)
30

En el servidor se muestra los siguientes mensajes:

localhost - - [24/Mar/2008 00:13:38] "POST /RPC2 HTTP/1.0" 200 -
localhost - - [24/Mar/2008 00:14:23] "POST /RPC2 HTTP/1.0" 200 -
localhost - - [24/Mar/2008 00:14:36] "POST /RPC2 HTTP/1.0" 200 -

Son las respuestas a la conexiones del cliente. Este programa se puede mejorar evaluando el tipo de datos que envia el cliente para así evitar errores al mandar un string en vez de un número.