import ssl
import re
import config
+import logging
+
+_logger = logging.getLogger('arvados.events')
class EventClient(WebSocketClient):
def __init__(self, url, filters, on_event):
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