Diferencia entre revisiones de «Usuario:Luis.perez/sistemaspyaytozgz/rpc»
De WikiEducator
Línea 39: | Línea 39: | ||
* Twisted: http://twistedmatrix.com/trac | * Twisted: http://twistedmatrix.com/trac | ||
* ... | * ... | ||
+ | |||
+ | |||
+ | == Uso de DBus con python == | ||
+ | |||
+ | * Bus de sesión | ||
+ | <source lang="python"> | ||
+ | bus = dbus.SessionBus() | ||
+ | </source> | ||
+ | |||
+ | * Bus de sistema | ||
+ | <source lang="python"> | ||
+ | bus = dbus.SystemBus() | ||
+ | </source> | ||
+ | |||
+ | * Obteniendo métodos y propiedades y ejecutando un método | ||
+ | <source lang="python"> | ||
+ | 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() | ||
+ | |||
+ | </source> |
Última revisión de 09:25 21 ene 2013
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()