RPC en python

De WikiEducator
Saltar a: navegación, buscar


Python ofrece multiples alternativas para hacer RPC

xmlrpclib y SimpleXMLRPCServer

  • Parte de la librería estándar de python

Servidor:

import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
 
def is_even(n):
    return n%2 == 0
 
server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
server.register_function(is_even, "is_even")
server.serve_forever()

Cliente:

import xmlrpclib
 
proxy = xmlrpclib.ServerProxy("http://localhost:8000/")
print "3 is even: %s" % str(proxy.is_even(3))
print "100 is even: %s" % str(proxy.is_even(100))


Otros


Uso de DBus con python

  • Bus de sesión
bus = dbus.SessionBus()
  • Bus de sistema
bus = dbus.SystemBus()
  • Obteniendo métodos y propiedades y ejecutando un método
import dbus
 
bus = dbus.SystemBus()
 
eth0 = bus.get_object('org.freedesktop.NetworkManager', '/org/freedesktop/NetworkManager/Devices/1')
print("Métodos y propiedades que expone el interfaz eth0")
print(eth0.Introspect())
 
props = eth0.GetAll("org.freedesktop.NetworkManager.Device")
print("Propiedades que expone eth0 a través del interfaz org.freedesktop.NetworkManager.Device")
print(props)
 
print("Desconectando interfaz")
eth0.Disconnect()