3609: Add command line help strings
[arvados.git] / sdk / python / arvados / events.py
index e61b20c70851f8079137c540680842592a3dcb9b..b7d610d66e729a9b9cb3a27b29a9abc51395493b 100644 (file)
@@ -6,6 +6,9 @@ import time
 import ssl
 import re
 import config
+import logging
+
+_logger = logging.getLogger('arvados.events')
 
 class EventClient(WebSocketClient):
     def __init__(self, url, filters, on_event):
@@ -26,8 +29,21 @@ class EventClient(WebSocketClient):
     def received_message(self, m):
         self.on_event(json.loads(str(m)))
 
+    def close_connection(self):
+        try:
+            self.sock.shutdown(socket.SHUT_RDWR)
+            self.sock.close()
+        except:
+            pass
+
 def subscribe(api, filters, on_event):
-    url = "{}?api_token={}".format(api._rootDesc['websocketUrl'], config.get('ARVADOS_API_TOKEN'))
-    ws = EventClient(url, filters, on_event)
-    ws.connect()
-    return ws
+    ws = None
+    try:
+        url = "{}?api_token={}".format(api._rootDesc['websocketUrl'], config.get('ARVADOS_API_TOKEN'))
+        ws = EventClient(url, filters, on_event)
+        ws.connect()
+        return ws
+    except Exception:
+        if (ws):
+          ws.close_connection()
+        raise