[Python-es] try - except no captura Traceback

Marcos Sánchez Provencio rapto en arrakis.es
Mie Dic 12 09:45:45 CET 2012


Este mensaje no ayudaba mucho...

Creo que hay try/except más interno que gestiona esa excepción, sacando 
la información por pantalla, pero no tengo tiempo de mirarlo...

El 12/12/12 08:55, Marcos Sánchez Provencio escribió:
> Puede ser simplemente que el cliente cancela la recepción... Otra cosa 
> es que eso te tumbe el servidor.
>
> El 11/12/12 21:45, Jose Caballero escribió:
>> Hola,
>>
>> python 2.6 en RHEL 6
>>
>> tengo un codigo como este [1].
>> Esta dentro de un thread con la intencion de arrancar un servidor HTTP.
>> Suele funcionar bien casi el 100% del tiempo.
>> Sin embargo, de vez en cuando, me encuentro este Traceback en la 
>> consola [2]
>> Evidentemente tengo que trabajarme un poco la logica del thread.
>> 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()
>> 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"
>> 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.
>> Por que ese try - except es capaz de capturar el Err 5, pero no el 104?
>>
>> Cualquier comentario y/o documentacion sobre esto sera mas que 
>> bienvenida.
>>
>> Saludos,
>> Jose  (perdon por la ausencia de tildes)
>>
>> -----------------------------------------------------------------------------------------------------------------------------
>>
>> [1]
>>
>>
>>     def _init_socketserver(self):
>>         while not self.httpd:
>>             try:
>>                 self.log.debug("Attempting to bind to socket for HTTP 
>> server on port %s" % self.port)
>>                 self.httpd = SocketServer.TCPServer(("", self.port), 
>> self.handler)
>> self.log.info <http://self.log.info>("Initialized HTTP SocketServer 
>> port=%d, root=%s, index = %s" % (self.port,
>> self.docroot,
>> self.index))
>>             except Exception, e:
>>                 self.log.warning("Socket server exception: %s" % str(e))
>>                 self.log.warning("Attempt to initialize HTTP server 
>> failed. Will wait 60s and try again.")
>>                 time.sleep(60)
>>
>>     def run(self):
>> self.log.info <http://self.log.info>("Initializing HTTP server...")
>>         self._init_socketserver()
>>
>>         os.chdir(self.docroot)
>>         self.log.debug("Changing working dir to %s"% self.docroot)
>>         while not self.stopevent.isSet():
>>             try:
>>                 self.httpd.serve_forever()
>>             except Exception, e:
>>                 self.log.error("HTTP Server threw exception: %s" % 
>> str(e))
>>
>> -----------------------------------------------------------------------------------------------------------------------------
>>
>> [2]
>>
>>
>> Traceback (most recent call last):
>>   File "/usr/lib64/python2.6/SocketServer.py", line 283, in 
>> _handle_request_noblock
>>     self.process_request(request, client_address)
>>   File "/usr/lib64/python2.6/SocketServer.py", line 309, in 
>> process_request
>>     self.finish_request(request, client_address)
>>   File "/usr/lib64/python2.6/SocketServer.py", line 322, in 
>> finish_request
>>     self.RequestHandlerClass(request, client_address, self)
>>   File "/usr/lib64/python2.6/SocketServer.py", line 617, in __init__
>>     self.handle()
>>   File "/usr/lib64/python2.6/BaseHTTPServer.py", line 329, in handle
>>     self.handle_one_request()
>>   File "/usr/lib64/python2.6/BaseHTTPServer.py", line 323, in 
>> handle_one_request
>>     method()
>>   File "/usr/lib64/python2.6/SimpleHTTPServer.py", line 44, in do_GET
>>     f = self.send_head()
>>   File "/usr/lib64/python2.6/SimpleHTTPServer.py", line 81, in send_head
>>     return self.list_directory(path)
>>   File "/usr/lib64/python2.6/SimpleHTTPServer.py", line 134, in 
>> list_directory
>>     self.send_response(200)
>>   File "/usr/lib64/python2.6/BaseHTTPServer.py", line 382, in 
>> send_response
>>     (self.protocol_version, code, message))
>>   File "/usr/lib64/python2.6/socket.py", line 324, in write
>>     self.flush()
>>   File "/usr/lib64/python2.6/socket.py", line 303, in flush
>>     self._sock.sendall(buffer(data, write_offset, buffer_size))
>> error: [Errno 104] Connection reset by peer
>>
>>
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121212/aa7a1e5c/attachment.html>


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