Skip to content

Commit 0cb730c

Browse files
committed
Add _handle_keepalive_exception plugin hook (fix #49)
1 parent 4351289 commit 0cb730c

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

backslash/contrib/keepalive_thread.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
import threading
21
import logbook
2+
import sys
3+
import threading
34

45
_logger = logbook.Logger(__name__)
56

67

78
class KeepaliveThread(threading.Thread):
89

9-
def __init__(self, client, session, interval):
10+
def __init__(self, client, session, interval, error_callback=None):
1011
super(KeepaliveThread, self).__init__()
1112
self._client = client
1213
self._session = session
1314
self._interval = interval / 2.0
1415
self._stopped_event = threading.Event()
16+
self._error_callback = error_callback
1517
self.daemon = True
1618

1719
def run(self):
@@ -22,6 +24,8 @@ def run(self):
2224
self._session.send_keepalive()
2325
except Exception: #pylint: disable=broad-except
2426
_logger.error('Quitting keepalive thread due to exception', exc_info=True)
27+
if self._error_callback is not None:
28+
self._error_callback(sys.exc_info())
2529
raise
2630
finally:
2731
_logger.debug('Backslash keepalive thread terminated')

backslash/contrib/slash_plugin.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ def webapp_url(self):
8888
def _handle_exception(self, exc_info):
8989
pass
9090

91+
def _handle_keepalive_exception(self, exc_info):
92+
pass
93+
9194
def _get_backslash_url(self):
9295
return self._url
9396

@@ -145,7 +148,7 @@ def session_start(self):
145148
self.client.api.call.add_label(session_id=self.session.id, label=label)
146149

147150
if self._keepalive_interval is not None:
148-
self._keepalive_thread = KeepaliveThread(self.client, self.session, self._keepalive_interval)
151+
self._keepalive_thread = KeepaliveThread(self.client, self.session, self._keepalive_interval, error_callback=self._handle_keepalive_exception)
149152
self._keepalive_thread.start()
150153

151154
def _get_initial_session_metadata(self):

0 commit comments

Comments
 (0)