Respuesta lentÃsima de SimpleXMLRPCServer en windows xp
Sio2 <[email protected]> Thu, 10 Dec 2009 22:26:57 +0100
| Newsgroups | gmane.comp.python.general.castellano |
|---|---|
| Message-ID | <[email protected]> |
Un saludo, listeros. A ver si me pod=E9is echar un cable, porque no me
explico lo que ocurre.
Estoy desarrollando una peque=F1a aplicaci=F3n que, por motivos que no
vienen al caso, he tenido que separar en servidor-cliente. Para
comunicar ambas partes he desarrollado una interfaz telnet simploncilla
y otra XMLRPC. Para la XMLRPC, que es la que verdaderamente me
interesa, uso SimpleXMLRPCServer.
El problema es que todas las peticiones al servidor, por muy simples que
sean, se demoran 4,5 segundos cuando el servidor corre en una m=E1quina
windows. Si lo hace en un linux las respuestas son pr=E1cticamente
inmediatas. He estado haciendo algunas pruebas y llegu=E9 a la conclusi=F3=
n
de que no era culpa de mi programa, as=ED que he probado hacer lo
siguiente: me he olvidado de mi c=F3digo y he cogido un ejemplo de
servidor XMLRPC pelado, sin threads ni nada. En concreto, tom=E9 el de
esta p=E1gina:
http://denklab.org/articles/2008/7/pymotw-simplexmlrpcserver/
aunque lo he enmendado para que admita conexiones que no sean la local.
Pego aqu=ED el c=F3digo de prueba:
PARTE SERVIDOR
-------8<-------
from SimpleXMLRPCServer import SimpleXMLRPCServer
import logging
import os
# Prepara registro
logging.basicConfig(level=3Dlogging.DEBUG)
server =3D SimpleXMLRPCServer(('0.0.0.0', 9000), logRequests=3DTrue)
# Expone una funci=F3n
def list_contents(dir_name):
logging.debug('list_contents(%s)', dir_name)
return os.listdir(dir_name)
server.register_function(list_contents)
try:
print 'Usa Control-C para salir'
server.serve_forever()
except KeyboardInterrupt:
print 'Saliendo'
------->8-------
PARTE CLIENTE
-------8<-------
import xmlrpclib
from sys import argv
try:
SERVER=3Dargv[1]
except IndexError:
SERVER=3D'localhost'
proxy =3D xmlrpclib.ServerProxy('http://'+SERVER+':9000')
print proxy.list_contents('.')
------->8-------
Lo m=E1s simple que se estila. Ahora he llevado este servidor a dos
m=E1quinas virtuales, una corre windows (192.168.1.32) y otra una gentoo
(192.168.1.10) y este es el resultado:
#v+
$ time ./client.py 192.168.1.10
['client.py', 'server.py']
real 0m0.029s
user 0m0.020s
sys 0m0.000s
#v-
#v+
$ time ./client.py 192.168.1.32
['abies', 'Abies 2.lnk', 'client.py', 'server.py']
real 0m4.676s
user 0m0.012s
sys 0m0.012s
#v-
=BFAlguien sabe explicarme por qu=E9? =BFEs culpa de alguna configuraci=F3=
n
esot=E9rica del windows xp que hay que cambiar y no de python? Yo el
windows este lo =FAnico que he hecho es instalarlo, meterle python 2.6.4
(gentoo tiene el 2.6.2) y abrirle el puerto correspondiente. No es un
problema de la m=E1quina virtual, porque prob=E9 en el trabajo entre dos
m=E1quinas windows reales y el problema de demora tambi=E9n se produce. S=
in
embargo, he estado buscando en internet a ver si ve=EDa algo al respecto =
y
no he encontrado nada.
=A1Ah! Si el cliente se ejecuta en la misma m=E1quina windows que el
servidor, no se demora la respuesta, aunque se conecte a la ip
192.168.1.32, en vez de a la 127.0.0.1.
Muchas gracias de antemano.
--=20
Un bel morir tutta una vita honora.
--- Francisco Petrarca ---
_______________________________________________
Lista de correo Python-es=20
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes