def run_external_commands(self, cmds):
        """Run external commands Arbiter/Receiver sent

        :param cmds: commands to run
        :type cmds: list
        :return: None
        """
        if not self.external_commands_manager:
            return

        try:
            _t0 = time.time()
            logger.debug("Scheduler '%s' got %d commands", self.name, len(cmds))
            for command in cmds:
                self.external_commands_manager.resolve_command(ExternalCommand(command))
            statsmgr.counter('external-commands.got.count', len(cmds))
            statsmgr.timer('external-commands.got.time', time.time() - _t0)
        except Exception as exp:  # pylint: disable=broad-except
            logger.warning("External command parsing error: %s", exp)
            logger.warning("Exception: %s / %s", str(exp), traceback.print_exc())
            for command in cmds:
                try:
                    command = command.decode('utf8', 'ignore')
                except UnicodeEncodeError:
                    pass
                except AttributeError:
                    pass

                logger.warning("Command: %s", command)
Run external commands Arbiter/Receiver sent

        :param cmds: commands to run
        :type cmds: list
        :return: None