def dispatch(self, command):
        """Pass a command along with its params to a suitable handler
        
        If the command is blank, succeed silently
        If the command has no handler, succeed silently
        If the handler raises an exception, fail with the exception message
        """
        log.info("Dispatch on %s", command)
        if not command:
            return "OK"
        
        action, params = self.parse_command(command)
        log.debug("Action = %s, Params = %s", action, params)
        try:
            function = getattr(self, "do_" + action, None)
            if function:
                function(*params)
            return "OK"
        except KeyboardInterrupt:
            raise
        except Exception as exc:
            log.exception("Problem executing action %s", action)
            return "ERROR: %s" % exc
Pass a command along with its params to a suitable handler
        
        If the command is blank, succeed silently
        If the command has no handler, succeed silently
        If the handler raises an exception, fail with the exception message