23 mar. 2008

Ejemplo XML-RPC en python

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.
Publicar un comentario en la entrada

AddThis