def METHOD_NAME(self):
    while True:
        try:
            if self.file_events is None or len(self.file_events) == 0:
                # We have no schedule, so we have nothing else to do. Let's
                # do a blocked wait on the queue
                self.file_events = self.file_events_queue.get(block=True)
            else:
                # We have a schedule we need to process, but we also want
                # to check if a newer schedule is available. In this case
                # do a non-blocking queue.get and in either case (we get something
                # or we don't), get back to work on preparing getting files.
                try:
                    self.file_events = self.file_events_queue.get_nowait()
                except Empty:
                    pass
            file_event = self.get_highest_priority_file_event(self.file_events)
            if file_event is not None:
                self.copy_file(file_event)
        except Exception as exception:  # pylint: disable=broad-exception-caught
            logger.exception(exception)
            raise exception