def _find_all_courses(**kwargs): # get all courses using task, saving to a temp file with tempfile.NamedTemporaryFile() as temp: with logging_streams_on_failure('Find All Courses') as (output_file, error_file): try: FindAllCoursesTask.run(temp.name, stderr_file=error_file, stdout_file=output_file, **kwargs) except: # pylint: disable=bare-except courses = [] log.warning('Failed to retrieve list of all courses.', exc_info=True) else: temp.seek(0) lines = (line.strip() for line in temp.readlines()) courses = [line.decode('utf-8') for line in lines if line] log.debug("Found courses: %s", courses) return courses
def _run_task(task, **kwargs): log.info("Running task %s", task.__name__) filename = task.get_filename(**kwargs) try: with collect_elapsed_time(task, **kwargs), \ logging_streams_on_failure(task.__name__) as (output_file, error_file): task.run(filename, stderr_file=error_file, stdout_file=output_file, **kwargs) log.info('Saving task results to %s', filename) return filename except FatalTaskError: log.exception('Task %s failed fatally to write to %s', task.__name__, filename) raise except Exception: # pylint: disable=broad-except failed_filename = task.write_failed_file(**kwargs) log.exception('Task %s failed fatally, writing failure file %s', task.__name__, failed_filename) return failed_filename