Respuesta lentísima de SimpleXMLRPCServer en windows xp [SOLUCIONADO]

Sio2 aussiliar en online.fr
Mie Dic 16 21:47:53 CET 2009


> Has probado a pasarle el profiler?

:)

Te declaro mi amor incondicional.

No lo había hecho, he seguido tu consejo... y ya sé la causa. Se lo he
pasado al servidor:

C:\...\> python -m cProfile wserver.py


(wserver.py es el cutreservidor web que dejé escrito antes)

He hecho una petición y lo he cortado. Me ha volcado el profiler la
información y me ha escamado esto:

1 0.000 0.000 4.524 BaseHTTPServer.py:478(address_string)

Ahí están mis famosos 4 segundos y medio. Ahí y en otras funciones que
supuse que invocaban a esta y por eso también tardaban en ejecutarse 4,5
segundos.

He ido a la documentación y he leído:

address_string()
    Returns the client address, formatted for logging. A name lookup is
    performed on the client's IP address.

Y, efectivamente, el único servidor windows que me funcionó bien estaba
en una red donde todas las máquinas tenían nombre. Así que me he ido
directamente al fichero hosts de mi windows virtual le he asociado un
nombre cualquiera a la ip del cliente y el problema ha desaparecido. Ese
era el problema: que el servidor se tiraba 4,5 segundos buscando un
nombre que no existía. Supongo que tras ese tiempo, temporizaba y
devolvía la respuesta.

¿Cómo solucionaríais el problema de una forma elegante? Supongo que
redefiniendo el método address_string de BaseHTTPRequestHandler, pero
cómo, porque no tengo ni idea de cómo conocer la ip del cliente dentro
de esa clase.

Muchísimas gracias.

-- 
   Todos los hombres que no tienen nada importante que decir
hablan a gritos.
                  --- Enrique Jardiel Poncela ---
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es