SimpleXMLRPCServer problema enigmatico

Paco Moreno packo en assamita.net
Mie Ago 31 11:25:26 CEST 2005


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]]
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).
-- 
|Paco Moreno                         
|web: http://www.assamita.net       
|blog: http://blog.assamita.net
|correo: packo en assamita punto net 
|jabber: packo en jabber-hispano.org    

La libertad no es poder actuar arbitrariamente sino la capacidad de hacerlo
sensatamente.
  -- Rudolf Wirschow. 
------------ 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