cc-4105: refactored some error handling code

This commit is contained in:
Rudi Grinberg 2012-08-02 14:18:22 -04:00
parent b604dd0795
commit 7c85acac98
4 changed files with 24 additions and 13 deletions

View file

@ -120,6 +120,7 @@ class AirtimeMessageReceiver(Loggable):
except Exception as e: except Exception as e:
# TODO : add md_path to problem path or something? # TODO : add md_path to problem path or something?
self.logger.info("Unknown error when writing metadata to: '%s'" % md_path) self.logger.info("Unknown error when writing metadata to: '%s'" % md_path)
self.logger.info( traceback.format_exc() )
def new_watch(self, msg): def new_watch(self, msg):
self.logger.info("Creating watch for directory: '%s'" % msg['directory']) self.logger.info("Creating watch for directory: '%s'" % msg['directory'])

View file

@ -1,5 +1,6 @@
import logging import logging
import abc import abc
import traceback
from media.monitor.pure import LazyProperty from media.monitor.pure import LazyProperty
logger = logging.getLogger('mediamonitor2') logger = logging.getLogger('mediamonitor2')
@ -12,6 +13,14 @@ class Loggable(object):
# TODO : Clean this up # TODO : Clean this up
if not hasattr(self,"_logger"): self._logger = logging.getLogger('mediamonitor2') if not hasattr(self,"_logger"): self._logger = logging.getLogger('mediamonitor2')
return self._logger return self._logger
def unexpected_exception(self,e):
self.fatal_exception("'Unexpected' exception has occured:", e)
def fatal_exception(self, message, e):
self.logger.error(message)
self.logger.error( str(e) )
self.logger.error( traceback.format_exc() )
def get_logger(): def get_logger():
return logging.getLogger('mediamonitor2') return logging.getLogger('mediamonitor2')

View file

@ -103,9 +103,9 @@ class Metadata(Loggable):
song_file = mutagen.File(path, easy=True) song_file = mutagen.File(path, easy=True)
for airtime_k, airtime_v in md.iteritems(): for airtime_k, airtime_v in md.iteritems():
if airtime_k in airtime2mutagen: if airtime_k in airtime2mutagen:
song_file[ airtime2mutagen[airtime_k] ] = airtime_v # The unicode cast here is mostly for integers that need to be
else: # strings
song_file[ airtime2mutagen[airtime_k] ] = u"" song_file[ airtime2mutagen[airtime_k] ] = unicode(airtime_v)
song_file.save() song_file.save()

View file

@ -5,7 +5,7 @@ import copy
import traceback import traceback
from media.monitor.handler import ReportHandler from media.monitor.handler import ReportHandler
from media.monitor.events import NewFile, DeleteFile from media.monitor.events import NewFile, DeleteFile, ModifyFile
from media.monitor.log import Loggable from media.monitor.log import Loggable
from media.monitor.listeners import FileMediator from media.monitor.listeners import FileMediator
from media.monitor.exceptions import BadSongFile from media.monitor.exceptions import BadSongFile
@ -106,16 +106,17 @@ class WatchSyncer(ReportHandler,Loggable):
def handle(self, sender, event): def handle(self, sender, event):
"""We implement this abstract method from ReportHandler""" """We implement this abstract method from ReportHandler"""
# TODO : more types of events need to be handled here # TODO : more types of events need to be handled here
if isinstance(event, NewFile): if hasattr(event, 'pack'):
try: # We push this event into queue
self.logger.info("'%s' : New file added: '%s'" % (self.target_path, event.path)) self.logger.info("Received event '%s'. Path: '%s'" % ( "", getattr(event,'path','No path exists') ))
self.push_queue(event) try: self.push_queue( event )
except BadSongFile as e: except BadSongFile as e:
self.report_problem_file(event=event, exception=e) self.logger.info("...")
elif isinstance(event, DeleteFile): except Exception as e:
self.logger.info("'%s' : Deleted file: '%s'" % (self.target_path, event.path)) self.unexpected_exception(e)
self.push_queue(event) else:
else: raise Exception("Unknown event: %s" % str(event)) self.logger.info("Received event that cannot be packed. Printing its representation:")
self.logger.info( repr(event) )
def requests_left_count(self): return len(self.__requests) def requests_left_count(self): return len(self.__requests)
def events_left_count(self): return len(self.__queue) def events_left_count(self): return len(self.__queue)