John Cardozo
Remote Procedure Call
Permite ejecutar código en una máquina remota como si estuviera ejecutándose en la máquina local
cliente
datos de
respuesta
red
ejecución
de código
servidor
HTTP
XML
cliente
servidor
XML RPC
int
string
boolean
double
datetime
base64
array
struct
enteros de 32 bits
ASCII (null)
true | false
decimales
iso8601
datos binarios
arreglos unidimensionales
key (string), value
Definición del servidor
Definición de funciones
Registro de funciones
Ejecutar el servidor
1
2
3
4
Definición del servidor
from xmlrpc.server import SimpleXMLRPCServer
servidor = SimpleXMLRPCServer(
('localhost', 8001),
allow_none=True, # Permite valores nulos
logRequests=True
)
def sumar(num1, num2):
return num1 + num2
Definición de funciones
servidor.register_function(sumar)
Registro de funciones
if __name__ == '__main__':
try:
print('Iniciando servidor...')
servidor.serve_forever()
except KeyboardInterrupt:
print('Terminando servidor...')
Ejecutar el servidor
# Libreria
from xmlrpc.server import SimpleXMLRPCServer
# Definición del servidor
servidor = SimpleXMLRPCServer(
('localhost', 8001),
allow_none=True,
logRequests=True
)
# Definición de la función
def sumar(num1, num2):
return num1 + num2
# registro de la función
servidor.register_function(sumar)
# Ejecución del servidor
if __name__ == '__main__':
try:
print('Iniciando servidor...')
servidor.serve_forever()
except KeyboardInterrupt:
print('Terminando servidor...')
Conexión al servidor
Ejecución de la función remota
1
2
Definición del servidor
import xmlrpc.client
servidor = xmlrpc.client.ServerProxy(
'http://localhost:8001'
)
resultado = servidor.sumar(2, 3)
print(resultado)
Ejecución de la función remota
johncardozo@gmail.com