X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b91db14a4dced9d6ea124e86be3c796e6f2c8e8c..aea4b0cd7553dfb27c3e6c448fcad349284d6cf4:/sdk/python/arvados/events.py diff --git a/sdk/python/arvados/events.py b/sdk/python/arvados/events.py index e61b20c708..06f3b34410 100644 --- a/sdk/python/arvados/events.py +++ b/sdk/python/arvados/events.py @@ -6,6 +6,7 @@ import time import ssl import re import config +import logging class EventClient(WebSocketClient): def __init__(self, url, filters, on_event): @@ -26,8 +27,22 @@ 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: + logging.exception('') + if (ws): + ws.close_connection() + raise