CC-5709: Airtime Analyzer

* Log tracebacks from child process
This commit is contained in:
Albert Santoni 2014-04-16 13:05:02 -04:00
parent 4d1843ca1f
commit b0670f5f47
1 changed files with 28 additions and 22 deletions

View File

@ -30,27 +30,33 @@ class AnalyzerPipeline:
temporary randomly generated name, which is why we want temporary randomly generated name, which is why we want
to know what the original name was. to know what the original name was.
""" """
if not isinstance(queue, multiprocessing.queues.Queue): try:
raise TypeError("queue must be a multiprocessing.Queue()") if not isinstance(queue, multiprocessing.queues.Queue):
if not isinstance(audio_file_path, unicode): raise TypeError("queue must be a multiprocessing.Queue()")
raise TypeError("audio_file_path must be unicode. Was of type " + type(audio_file_path).__name__ + " instead.") if not isinstance(audio_file_path, unicode):
if not isinstance(import_directory, unicode): raise TypeError("audio_file_path must be unicode. Was of type " + type(audio_file_path).__name__ + " instead.")
raise TypeError("import_directory must be unicode. Was of type " + type(import_directory).__name__ + " instead.") if not isinstance(import_directory, unicode):
if not isinstance(original_filename, unicode): raise TypeError("import_directory must be unicode. Was of type " + type(import_directory).__name__ + " instead.")
raise TypeError("original_filename must be unicode. Was of type " + type(original_filename).__name__ + " instead.") if not isinstance(original_filename, unicode):
raise TypeError("original_filename must be unicode. Was of type " + type(original_filename).__name__ + " instead.")
# Analyze the audio file we were told to analyze:
# First, we extract the ID3 tags and other metadata:
metadata = dict() # Analyze the audio file we were told to analyze:
metadata = MetadataAnalyzer.analyze(audio_file_path, metadata) # First, we extract the ID3 tags and other metadata:
metadata = FileMoverAnalyzer.move(audio_file_path, import_directory, original_filename, metadata) metadata = dict()
metadata["import_status"] = 0 # imported metadata = MetadataAnalyzer.analyze(audio_file_path, metadata)
metadata = FileMoverAnalyzer.move(audio_file_path, import_directory, original_filename, metadata)
# Note that the queue we're putting the results into is our interprocess communication metadata["import_status"] = 0 # imported
# back to the main process.
# Note that the queue we're putting the results into is our interprocess communication
# Pass all the file metadata back to the main analyzer process, which then passes # back to the main process.
# it back to the Airtime web application.
queue.put(metadata) # Pass all the file metadata back to the main analyzer process, which then passes
# it back to the Airtime web application.
queue.put(metadata)
except Exception as e:
# Ensures the traceback for this child process gets written to our log files:
logging.exception(e)
raise e