]> git-server-git.apps.pok.os.sepia.ceph.com Git - remoto.git/commitdiff
catch TimeoutError correctly when logging
authorAlfredo Deza <alfredo@deza.pe>
Fri, 13 Sep 2013 16:44:35 +0000 (12:44 -0400)
committerAlfredo Deza <alfredo@deza.pe>
Fri, 13 Sep 2013 16:45:47 +0000 (12:45 -0400)
remoto/log.py

index 35c6ce25b7f88d6481aadff602de628d15b4d969..aba95382448198144242dc2102bbd688450bfed7 100644 (file)
@@ -1,11 +1,21 @@
 
 
-def reporting(conn, result):
+def reporting(conn, result, timeout=None):
+    timeout = timeout or -1  # a.k.a. wait for ever
     log_map = {'debug': conn.logger.debug, 'error': conn.logger.error}
     while True:
         try:
-            received = result.receive()
+            received = result.receive(timeout)
             level_received, message = list(received.items())[0]
             log_map[level_received](message.strip('\n'))
         except EOFError:
             break
+        except Exception as err:
+            # the things we need to do here :(
+            # because execnet magic, we cannot catch this as
+            # `except TimeoutError`
+            if err.__class__.__name__ == 'TimeoutError':
+                msg = 'No data was received after %s seconds, disconnecting...' % timeout
+                conn.logger.warning(msg)
+                break
+            raise