Re: [Python-es] Respuesta lentísima de SimpleXMLRPCServer en windows xp [SOLUCIONADO]

heimy ricardo.cardenes en gmail.com
Mie Dic 16 23:48:39 CET 2009


2009/12/16 Sio2 <aussiliar en online.fr>:

>
> 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.

Jojojo... Pena que llegué tarde a la conversación. Te iba a sugerir
problemas de red y, mira tú, era por problemas de resolución inversa
:D ¡Qué clásico!

> ¿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.

En la docu de BaseHTTPServer tienes una indicación de por dónde tirar:

-----
log_message(	format, ...)

Logs an arbitrary message to sys.stderr. This is typically overridden
to create custom error logging mechanisms. The format argument is a
standard printf-style format string, where the additional arguments to
log_message() are applied as inputs to the formatting. The client
address and current date and time are prefixed to every message
logged.

----

Uno de los parámetros de inicialización de SimpleXMLRPCServer es
"requestHandler". Por defecto toma SimpleXMLRPCRequestHandler, que
hereda de BaseHTTPRequestHandler y tiene un "log_message". Si creas un
derivado de SimpleXMLRPCRequestHandler redefiniendo log_message de
alguna manera que te convenga (imprimiendo la IP a secas en lugar del
nombre, por ejemplo) y le pasas al servidor un
requesHandler=ClaseDerivada, pues ya tendrías el problema resuelto.
_______________________________________________
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