Hola,<br>
<br>
python 2.6 en RHEL 6<br>
<br>
tengo un codigo como este [1]. <br>
Esta dentro de un thread con la intencion de arrancar un servidor HTTP. <br>
Suele funcionar bien casi el 100% del tiempo. <br>
Sin embargo, de vez en cuando, me encuentro este Traceback en la consola [2]<br>
Evidentemente tengo que trabajarme un poco la logica del thread. <br>
Pero lo que me gustaria saber, y por eso pregunto aqui, es por que ese 
Traceback no es capturado por el bloque try - except  que contiene a 
self.httpd.serve_forever() <br>
No lo captura, y por tanto tampoco veo en los ficheros de logs el 
mensaje "HTTP Server threw exception:  [Errno 104] Connection reset by 
peer"<br>
Nota curiosa, si tengo en los logs otros mensajes, como "HTTP Server 
threw exception: [Errno 5] Input/output error", que vienen del mismo try
 - except.<br>
Por que ese try - except es capaz de capturar el Err 5, pero no el 104? <br>
<br>
Cualquier comentario y/o documentacion sobre esto sera mas que bienvenida.<br>
<br>
Saludos, <br>
Jose  (perdon por la ausencia de tildes)<br>
<br>
-----------------------------------------------------------------------------------------------------------------------------<br>
<br>
[1]<br>
<br>
    <br>
    def _init_socketserver(self):<br>
        while not self.httpd:<br>
            try:<br>
                self.log.debug("Attempting to bind to socket for HTTP server on port %s" % self.port)<br>
                self.httpd = SocketServer.TCPServer(("", self.port), self.handler)<br>
                <a href="http://self.log.info">self.log.info</a>("Initialized HTTP SocketServer port=%d, root=%s, index = %s" % (self.port, <br>
                                                                                             self.docroot, <br>
                                                                                             self.index)) <br>
            except Exception, e:<br>
                self.log.warning("Socket server exception: %s" % str(e))<br>
                self.log.warning("Attempt to initialize HTTP server failed. Will wait 60s and try again.")    <br>
                time.sleep(60)<br>
    <br>
    def run(self):<br>
        <a href="http://self.log.info">self.log.info</a>("Initializing HTTP server...")<br>
        self._init_socketserver()<br>
    <br>
        os.chdir(self.docroot)<br>
        self.log.debug("Changing working dir to %s"%  self.docroot)<br>
        while not self.stopevent.isSet():<br>
            try:<br>
                self.httpd.serve_forever()<br>
            except Exception, e:<br>
                self.log.error("HTTP Server threw exception: %s" % str(e))<br>
<br>
-----------------------------------------------------------------------------------------------------------------------------<br>
<br>
[2]<br>
<br>
<br>
Traceback (most recent call last):<br>
  File "/usr/lib64/python2.6/SocketServer.py", line 283, in _handle_request_noblock<br>
    self.process_request(request, client_address)<br>
  File "/usr/lib64/python2.6/SocketServer.py", line 309, in process_request<br>
    self.finish_request(request, client_address)<br>
  File "/usr/lib64/python2.6/SocketServer.py", line 322, in finish_request<br>
    self.RequestHandlerClass(request, client_address, self)<br>
  File "/usr/lib64/python2.6/SocketServer.py", line 617, in __init__<br>
    self.handle()<br>
  File "/usr/lib64/python2.6/BaseHTTPServer.py", line 329, in handle<br>
    self.handle_one_request()<br>
  File "/usr/lib64/python2.6/BaseHTTPServer.py", line 323, in handle_one_request<br>
    method()<br>
  File "/usr/lib64/python2.6/SimpleHTTPServer.py", line 44, in do_GET<br>
    f = self.send_head()<br>
  File "/usr/lib64/python2.6/SimpleHTTPServer.py", line 81, in send_head<br>
    return self.list_directory(path)<br>
  File "/usr/lib64/python2.6/SimpleHTTPServer.py", line 134, in list_directory<br>
    self.send_response(200)<br>
  File "/usr/lib64/python2.6/BaseHTTPServer.py", line 382, in send_response<br>
    (self.protocol_version, code, message))<br>
  File "/usr/lib64/python2.6/socket.py", line 324, in write<br>
    self.flush()<br>
  File "/usr/lib64/python2.6/socket.py", line 303, in flush<br>
    self._sock.sendall(buffer(data, write_offset, buffer_size))<br>
error: [Errno 104] Connection reset by peer<br>