Exemple #1
0
    def init_sequential(self):
        """
        Initialise Flow for sequential mode

        Returns
        -------
        True if every initialisation are correct
        Otherwise False
        """
        self.configure_ports()
        self.sequential_instances = dict()
        # set coroutines
        #producer
        conf = self.get_step_conf(self.producer_step.name)
        module = conf['module']
        class_name = conf['class']
        try:
            coroutine = dynamic_class_from_module(class_name, module, self)
        except DynamicClassError as e:
            self.log.error('{}'.format(e))
            return False

        self.producer = ProducerSequential(coroutine, name=self.producer_step.name,
                                  connections=self.producer_step.connections,
                                  main_connection_name = self.producer_step.main_connection_name)
        self.producer.init()
        self.producer_step.process.append(self.producer)
        self.sequential_instances[self.producer_step.name] = self.producer
        #stages
        for step in (self.stager_steps ):
            conf = self.get_step_conf(step.name)
            module = conf['module']
            class_name = conf['class']
            try:
                coroutine = dynamic_class_from_module(class_name, module, self)
            except DynamicClassError as e:
                self.log.error('{}'.format(e))
                return False

            stage = StagerSequential(coroutine,name = step.name, connections=step.connections,
                                     main_connection_name=step.main_connection_name)
            step.process.append(stage)
            self.sequential_instances[step.name] = stage
            self.stagers.append(stage)
            stage.init()
        #consumer
        conf = self.get_step_conf(self.consumer_step.name)
        module = conf['module']
        class_name = conf['class']
        try:
            coroutine = dynamic_class_from_module(class_name, module, self)
        except DynamicClassError as e:
            self.log.error('{}'.format(e))
            return False
        self.consumer = ConsumerSequential(coroutine, name =  conf['name'])
        self.consumer_step.process.append(self.consumer)
        self.consumer.init()
        self.sequential_instances[self.consumer_step.name] = self.consumer
        self.display_conf()
        return True
Exemple #2
0
    def init_sequential(self):
        """
        Initialise Flow for sequential mode
        Returns:
        ========
        True if every initialisation are correct
        Otherwise False
        """
        self.configure_ports()
        self.sequential_instances = dict()
        # set coroutines
        #producer
        conf = self.get_step_conf(self.producer_step.name)
        module = conf['module']
        class_name = conf['class']
        try:
            coroutine = dynamic_class_from_module(class_name, module, self)
        except DynamicClassError as e:
            self.log.error('{}'.format(e))
            return False

        self.producer = ProducerSequential(coroutine, name=self.producer_step.name,
                                  connexions=self.producer_step.connexions,
                                  main_connexion_name = self.producer_step.main_connexion_name)
        self.producer.init()
        self.producer_step.processus.append(self.producer)
        self.sequential_instances[self.producer_step.name] = self.producer
        #stages
        for step in (self.stager_steps ):
            conf = self.get_step_conf(step.name)
            module = conf['module']
            class_name = conf['class']
            try:
                coroutine = dynamic_class_from_module(class_name, module, self)
            except DynamicClassError as e:
                self.log.error('{}'.format(e))
                return False

            stage = StagerSequential(coroutine,name = step.name, connexions=step.connexions,
                                     main_connexion_name=step.main_connexion_name)
            step.processus.append(stage)
            self.sequential_instances[step.name] = stage
            self.stagers.append(stage)
            stage.init()
        #consumer
        conf = self.get_step_conf(self.consumer_step.name)
        module = conf['module']
        class_name = conf['class']
        try:
            coroutine = dynamic_class_from_module(class_name, module, self)
        except DynamicClassError as e:
            self.log.error('{}'.format(e))
            return False
        self.consumer = ConsumerSequential(coroutine, name =  conf['name'])
        self.consumer_step.processus.append(self.consumer)
        self.consumer.init()
        self.sequential_instances[self.consumer_step.name] = self.consumer
        self.display_conf()
        return True
Exemple #3
0
 def instantiation(self,
                   name,
                   stage_type,
                   process_name=None,
                   port_in=None,
                   connections=None,
                   main_connection_name=None,
                   config=None):
     '''
     Instantiate on Python object from name found in configuration
     
     Parameters
     ----------
     name : str
             stage name
     stage_type	: str
     process_name : str
     port_in : str
             step ZMQ port in
     connections : dict
             key: StepName, value" connection ZMQ ports
     main_connection_name : str
         main ZMQ connection name. Connexion to use when user not precise
     '''
     stage = self.get_step_conf(name)
     module = stage['module']
     class_name = stage['class']
     obj = dynamic_class_from_module(class_name, module, self)
     if obj is None:
         raise FlowError('Cannot create instance of ' + name)
     obj.name = name
     if stage_type == self.STAGER:
         process = StagerZmq(obj,
                             port_in,
                             process_name,
                             connections=connections,
                             main_connection_name=main_connection_name)
     elif stage_type == self.PRODUCER:
         process = ProducerZmq(obj,
                               name,
                               connections=connections,
                               main_connection_name=main_connection_name)
     elif stage_type == self.CONSUMER:
         process = ConsumerZMQ(obj, port_in, name)
     else:
         raise FlowError('Cannot create instance of', name, '. Type',
                         stage_type, 'does not exist.')
     # set coroutine socket to it's stager or producer socket .
     return process
Exemple #4
0
 def instantiation(self, name, stage_type, process_name=None, port_in=None,
                   connections=None, main_connection_name=None, config=None):
     '''
     Instantiate on Python object from name found in configuration
     
     Parameters
     ----------
     name : str
             stage name
     stage_type	: str
     process_name : str
     port_in : str
             step ZMQ port in
     connections : dict
             key: StepName, value" connection ZMQ ports
     main_connection_name : str
         main ZMQ connection name. Connexion to use when user not precise
     '''
     stage = self.get_step_conf(name)
     module = stage['module']
     class_name = stage['class']
     obj = dynamic_class_from_module(class_name, module, self)
     if obj is None:
         raise FlowError('Cannot create instance of ' + name)
     obj.name = name
     if stage_type == self.STAGER:
         process = StagerZmq(
             obj, port_in, process_name,
             connections=connections,
             main_connection_name = main_connection_name)
     elif stage_type == self.PRODUCER:
         process = ProducerZmq(
             obj, name, connections=connections,
             main_connection_name= main_connection_name)
     elif stage_type == self.CONSUMER:
         process = ConsumerZMQ(
             obj,port_in,
             name)
     else:
         raise FlowError(
             'Cannot create instance of', name, '. Type',
              stage_type, 'does not exist.')
     # set coroutine socket to it's stager or producer socket .
     return process
Exemple #5
0
    def instantiation(
            self, section_name, stage_type, port_in=None,
            port_out=None, config=None, name=''):
        '''
        Instantiate on Pytohn object from name found in configuration
        Parameters
        ----------
        section_name : str
                section name in configuration file
        stage_type	: str
        port_in : str
                step port in
        port_out: str
                step port out
        name : str
                stage name
        '''
        stage = self.get_step_conf(section_name)
        module = stage['module']
        class_name = stage['class']
        obj = dynamic_class_from_module(class_name, module, self)

        if obj is None:
            raise PipelineError('Cannot create instance of ' + section_name)
        obj.section_name = section_name
        if stage_type == self.STAGER:
            thread = StagerZmq(
                obj, port_in, port_out, name=name, gui_address=self.gui_address)
        elif stage_type == self.PRODUCER:
            thread = ProducerZmq(
                obj, port_out, 'producer', gui_address=self.gui_address)
        elif stage_type == self.CONSUMER:
            thread = ConsumerZMQ(
                obj, port_in,
                'consumer', parent=self,
                gui_address=self.gui_address)
        else:
            raise PipelineError(
                'Cannot create instance of', section_name, '. Type',
                 stage_type, 'does not exist.')
        # set coroutine socket to it's stager or producer socket .
        return thread