def run(self, data: Data, argv: List): """Select a concrete connector and run the process through it. :param data: The :class:`~resolwe.flow.models.Data` object that is to be run. :param argv: The argument vector used to spawn the executor. """ process_scheduling = self.scheduling_class_map[ data.process.scheduling_class] if "DISPATCHER_MAPPING" in getattr(settings, "FLOW_MANAGER", {}): class_name = settings.FLOW_MANAGER["DISPATCHER_MAPPING"][ process_scheduling] else: class_name = getattr(settings, "FLOW_MANAGER", {}).get("NAME", DEFAULT_CONNECTOR) data.scheduled = now() data.save(update_fields=["scheduled"]) workload_class = class_name.rsplit(".", maxsplit=1)[1] host, port, protocol = self._get_listener_settings( data, workload_class) argv[-1] += " {} {} {}".format(host, port, protocol) return self.connectors[class_name].submit(data, argv)
def run(self, data: Data, runtime_dir: Path, argv): """Select a concrete connector and run the process through it. :param data: The :class:`~resolwe.flow.models.Data` object that is to be run. :param runtime_dir: The directory the executor is run from. :param argv: The argument vector used to spawn the executor. """ process_scheduling = self.scheduling_class_map[ data.process.scheduling_class] if "DISPATCHER_MAPPING" in getattr(settings, "FLOW_MANAGER", {}): class_name = settings.FLOW_MANAGER["DISPATCHER_MAPPING"][ process_scheduling] else: class_name = getattr(settings, "FLOW_MANAGER", {}).get("NAME", DEFAULT_CONNECTOR) data.scheduled = now() data.save(update_fields=["scheduled"]) return self.connectors[class_name].submit(data, runtime_dir, argv)