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