Adding error tracking to python

This commit is contained in:
James Barnsley
2017-09-22 16:15:50 +12:00
parent f8923ecaff
commit 60a560f4b3
5 changed files with 27 additions and 7 deletions

View File

@ -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)

View File

@ -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 {

View File

@ -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'
})