'Return True in the case we succeed in running, False otherwise.
This means we can use several processors and have one or the other work.'

def run(self):

    if (not (self.extension in self.supported_extensions)):
        return self.refuse()
    self.accept()
    try:
        self._run()
    except OSError as e:
        msg = 'Could    not    call    external    processor    {0}:    {1}'.format(self.__class__.__name__, e)
        if self.critical:
            logger.critical(msg)
            raise ExternalFailure(self.__class__.__name__, e)
        else:
            logger.info(msg)
            self.refuse()
