Adding error tracking to python
This commit is contained in:
@ -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)
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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'
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user