RPC en python
De WikiEducator
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
- Pyrp: http://packages.python.org/Pyro4/
- ZeroMQ: http://zguide.zeromq.org/page:all
- RPyC: http://rpyc.sourceforge.net/
- Twisted: http://twistedmatrix.com/trac
- ...
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()