From 60a560f4b3277186d0caa10ef21ba3fa5cc7132c Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Fri, 22 Sep 2017 16:15:50 +1200 Subject: [PATCH] Adding error tracking to python --- mopidy_iris/__init__.py | 9 ++++++++- mopidy_iris/core.py | 13 +++++++++++-- mopidy_iris/handlers.py | 3 +++ setup.py | 3 ++- src/js/services/mopidy/middleware.js | 6 +++--- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/mopidy_iris/__init__.py b/mopidy_iris/__init__.py index 782e0d85..1b1981f5 100755 --- a/mopidy_iris/__init__.py +++ b/mopidy_iris/__init__.py @@ -10,9 +10,10 @@ from mopidy import config, ext from frontend import IrisFrontend from handlers import WebsocketHandler, HttpHandler from core import IrisCore +from raven import Client logger = logging.getLogger(__name__) -__version__ = '3.4.5' +__version__ = '3.4.5' ## # Core extension class @@ -49,6 +50,12 @@ class Extension( ext.Extension ): mem.iris = IrisCore() mem.iris.version = self.version + # Connect to our Ravent Sentry error tracker + mem.iris.raven_client = Client( + dsn='https://023e3bf7721b48f29948545fc36a4621:ba30d29174ef4778ac4e141d445607a2@sentry.io/219026', + release=self.version + ) + # Add our frontend registry.add('frontend', IrisFrontend) diff --git a/mopidy_iris/core.py b/mopidy_iris/core.py index 83cb0920..aca8da49 100755 --- a/mopidy_iris/core.py +++ b/mopidy_iris/core.py @@ -132,6 +132,7 @@ class IrisCore(object): 'connection': client }) except: + self.raven_client.captureException() logger.error('Failed to close connection to '+ connection_id) def set_username(self, data): @@ -150,6 +151,7 @@ class IrisCore(object): else: error = 'Connection "'+data['connection_id']+'" not found' + self.raven_client.captureMessage(error) logger.error(error) return { 'status': 0, @@ -168,6 +170,7 @@ class IrisCore(object): else: error = 'Connection "'+data['connection_id']+'" not found' + self.raven_client.captureMessage(error) logger.error(error) return { 'status': 0, @@ -217,6 +220,7 @@ class IrisCore(object): upgrade_available = ( upgrade_available == 1 ) except urllib2.HTTPError as e: + self.raven_client.captureException(e) latest_version = '0.0.0' upgrade_available = False @@ -234,7 +238,8 @@ class IrisCore(object): try: subprocess.check_call(["pip", "install", "--upgrade", "Mopidy-Iris"]) return True - except subprocess.CalledProcessError: + except subprocess.CalledProcessError as e: + self.raven_client.captureException(e) return False def restart( self ): @@ -341,7 +346,9 @@ class IrisCore(object): token = self.spotify_token token = token['access_token'] except: - logger.error('IrisFrontend: access_token missing or invalid') + error = 'IrisFrontend: access_token missing or invalid' + self.raven_client.captureMessage(error) + logger.error(error) self.broadcast({ 'type': 'error', 'message': 'Could not get radio tracks: access_token missing or invalid', @@ -368,6 +375,7 @@ class IrisCore(object): return uris except: + self.raven_client.captureException() logger.error('IrisFrontend: Failed to fetch Spotify recommendations') self.broadcast({ 'type': 'error', @@ -491,6 +499,7 @@ class IrisCore(object): return self.get_spotify_token({}) except urllib2.HTTPError as e: + self.raven_client.captureException() error = json.loads(e.read()) return { diff --git a/mopidy_iris/handlers.py b/mopidy_iris/handlers.py index aada9c0e..488cae76 100755 --- a/mopidy_iris/handlers.py +++ b/mopidy_iris/handlers.py @@ -93,6 +93,7 @@ class WebsocketHandler(tornado.websocket.WebSocketHandler): response['request_id'] = request_id mem.iris.send_message(self.connection_id, response) else: + mem.iris.raven_client.captureMessage("Method "+message['method']+" does not exist") response = { 'status': 0, 'message': 'Method "'+message['method']+'" does not exist', @@ -100,6 +101,7 @@ class WebsocketHandler(tornado.websocket.WebSocketHandler): } mem.iris.send_message(self.connection_id, response) else: + mem.iris.raven_client.captureMessage("Method key missing from request") response = { 'status': 0, 'message': 'Method key missing from request', @@ -133,6 +135,7 @@ class HttpHandler(tornado.web.RequestHandler): # make the call, and return it's response self.write(getattr(mem.iris, slug)({})) else: + mem.iris.raven_client.captureMessage("Method "+slug+" does not exist") self.write({ 'error': 'Method "'+slug+'" does not exist' }) diff --git a/setup.py b/setup.py index 2266089a..c741de8f 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,8 @@ setup( 'pylast >= 1.6.0', 'Mopidy >= 2.0', 'Mopidy-Local-Images >= 1.0', - 'ConfigObj >= 5.0.6' + 'ConfigObj >= 5.0.6', + 'raven >= 6.1.0' ], classifiers=[ 'Environment :: No Input/Output (Daemon)', diff --git a/src/js/services/mopidy/middleware.js b/src/js/services/mopidy/middleware.js index 70b3d7b1..da8c9961 100755 --- a/src/js/services/mopidy/middleware.js +++ b/src/js/services/mopidy/middleware.js @@ -846,7 +846,7 @@ const MopidyMiddleware = (function(){ 'MOPIDY_GET_SEARCH_RESULTS_PROCESSOR', 'Searching '+action.data.uri_scheme.replace(':','')+' albums', { - remaining: (action.data.uri_schemes.length) + 0.5 + remaining: (action.data.uri_schemes.length) + 0.75 } )); instruct( socket, store, 'library.search', {query: {album: [action.data.query]}, uris: [action.data.uri_scheme]}) @@ -893,9 +893,9 @@ const MopidyMiddleware = (function(){ var process_artists = () => { store.dispatch(uiActions.updateProcess( 'MOPIDY_GET_SEARCH_RESULTS_PROCESSOR', - 'Searching '+action.data.uri_scheme.replace(':','')+' tracks', + 'Searching '+action.data.uri_scheme.replace(':','')+' artists', { - remaining: (action.data.uri_schemes.length) + 0.75 + remaining: (action.data.uri_schemes.length) + 0.5 } )); instruct( socket, store, 'library.search', {query: {artist: [action.data.query]}, uris: [action.data.uri_scheme]})