SimpleXMLRPCServer problema enigmatico
Paco Moreno
packo en assamita.net
Mie Ago 31 16:35:00 CEST 2005
El Miércoles 31 Agosto 2005 11:25, Paco Moreno escribió:
> Estoy con la cabeza caliente porque no se por qué falla la siguiente
> petición xmlrpc:
> "error":
> Traceback (most recent call last):
> File "iclient.py", line 57, in refresca_hebra
> b = self.server.memoria()
> File "/usr/lib/python2.4/xmlrpclib.py", line 1096, in __call__
> return self.__send(self.__name, args)
> File "/usr/lib/python2.4/xmlrpclib.py", line 1383, in __request
> verbose=self.__verbose
> File "/usr/lib/python2.4/xmlrpclib.py", line 1147, in request
> return self._parse_response(h.getfile(), sock)
> File "/usr/lib/python2.4/xmlrpclib.py", line 1286, in _parse_response
> return u.close()
> File "/usr/lib/python2.4/xmlrpclib.py", line 744, in close
> raise Fault(**self._stack[0])
> xmlrpclib.Fault: <Fault 1: 'exceptions.TypeError:function takes at least 2
> arguments (1 given)'>
>
> "codigo servidor":
> from SimpleXMLRPCServer import *
>
> class sesiones:
> def __init__(self):
> print "Instanciacion de sesiones"
>
> def datos_iniciales(self):
> #devuelve una lista: espacio a, espacio b,mem_total, swap_total
> a = os.open('/proc/meminfo')
> sal = a.read()
> lista = sal.split()
> return [lista[4],lista[7],lista[1],lista[13]] #revisar
>
> def espacio_2(self):
> #devuelve lista de 2 elementos: a:ocupado,b:ocupado en en %
> a,b = os.popen2('df / -h')
> sal = b.read()
> b.close()
> lista1 = sal.split()
> a,b = os.popen2('df /dev/hda1 -h')
> sal = b.read()
> b.close()
> lista2 = sal.split()
> return [lista1[11][0:-1],lista2[11][0:-1]]
def memoria(self):
#devuelve una lista de elementos: libre, cached, buffered,swap_cached
en kb
a = os.open('/proc/meminfo')
sal = a.read()
lista = sal.split()
return [lista[4],lista[7],lista[10],lista[13]]
> class servidor:
> """Clase principal del servidor."""
> configuraciones = {'puerto':6051,
> 'version_cliente':0.1,'version_server':0.1}
>
> def __init__(self):
> self.server = SimpleXMLRPCServer(("",
> self.configuraciones['puerto'])) self.server.register_instance(sesiones())
> self.server.register_introspection_functions( )
>
> def run(self):
> self.server.serve_forever()
>
> "cliente":
> class iclient:
> TIME_UPDATE = 200
> def __init__(self):
> self.x = gtk.glade.XML('gui.glade')
> self.x.signal_autoconnect(self)
> self.server = ServerProxy("http://localhost:6051")
> print self.server.system.listMethods()
> self.hebra = gobject.timeout_add(self.TIME_UPDATE,
> self.refresca_hebra)
>
> def refresca_hebra(self):
> a = self.server.espacio_2() <-------- Lo ejecuta bien
> self.x.get_widget('progressbar11').set_fraction(float(a[0])/100)
> self.x.get_widget('progressbar12').set_fraction(float(a[1])/100)
> b = self.server.memoria() <-------- da el error de arriba
> return 1
>
> ¿por qué? si alguien me lo puede decir muchas gracias porque por más que le
> doy vueltas está bien, a lo mejor se me escapa algún detalle de xmlrpc que
> no sepa(es la primera vez que hago una aplicación de este tipo).
Lo siento, por recortar código se me pasó
--
|Paco Moreno
|web: http://www.assamita.net
|blog: http://blog.assamita.net
|correo: packo en assamita punto net
|jabber: packo en jabber-hispano.org
Hay quien pone en duda el porvenir del ideal de la libertad. Nosotros
respondemos que tiene mas que un porvenir: posee eternidad.
-- Benedetto Croce.
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es