Diferencia entre revisiones de «Usuario:Luis.perez/sistemaspyaytozgz/rpc»

De WikiEducator
Saltar a: navegación, buscar
 
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


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()