コード例 #1
0
ファイル: listener.py プロジェクト: tparker-usgs/trollduction
class Listener(object):

    '''PyTroll listener class for reading messages for Trollduction
    '''

    def __init__(self, topics=None, queue=None):
        '''Init Listener object
        '''
        self.topics = topics
        self.queue = queue
        self.subscriber = None
        self.recv = None
        self.create_subscriber()
        self.running = False

    def create_subscriber(self):
        '''Create a subscriber instance using specified addresses and
        message types.
        '''
        if self.subscriber is None:
            if self.topics:
                self.subscriber = NSSubscriber("", self.topics,
                                               addr_listener=True)
                self.recv = self.subscriber.start().recv

    def add_to_queue(self, msg):
        '''Add message to queue
        '''
        self.queue.put(msg)

    def run(self):
        '''Run listener
        '''

        self.running = True

        for msg in self.recv(1):
            if msg is None:
                if self.running:
                    continue
                else:
                    break

            self.add_to_queue(msg)

    def stop(self):
        '''Stop subscriber and delete the instance
        '''
        self.running = False
        time.sleep(1)
        if self.subscriber is not None:
            self.subscriber.stop()
            self.subscriber = None

    def restart(self):
        '''Restart subscriber
        '''
        self.stop()
        self.create_subscriber()
        self.run()
コード例 #2
0
 def __init__(self, services, topics, nameserver="localhost"):
     """Init the message processor."""
     Thread.__init__(self)
     LOG.debug("Nameserver: {}".format(nameserver))
     self.nssub = NSSubscriber(services, topics, True, nameserver=nameserver)
     self.sub = None
     self.loop = True
コード例 #3
0
ファイル: trigger.py プロジェクト: ch-k/trollduction
class MessageProcessor(Thread):

    """Process Messages
    """

    def __init__(self, services, topics):
        Thread.__init__(self)
        self.nssub = NSSubscriber(services, topics, True)
        self.sub = None
        self.loop = True

    def start(self):
        self.sub = self.nssub.start()
        Thread.start(self)

    def process_message(self, msg):
        del msg
        raise NotImplementedError("process_message is not implemented!")

    def run(self):
        try:
            for msg in self.sub.recv(2):
                if not self.loop:
                    break
                if msg is None:
                    continue
                self.process_message(msg)
        finally:
            self.stop()

    def stop(self):
        self.nssub.stop()
        self.loop = False
コード例 #4
0
class MessageProcessor(Thread):
    """Process Messages
    """
    def __init__(self, services, topics):
        Thread.__init__(self)
        self.nssub = NSSubscriber(services, topics, True)
        self.sub = None
        self.loop = True

    def start(self):
        self.sub = self.nssub.start()
        Thread.start(self)

    def process_message(self, msg):
        del msg
        raise NotImplementedError("process_message is not implemented!")

    def run(self):
        try:
            for msg in self.sub.recv(2):
                if not self.loop:
                    break
                if msg is None:
                    continue
                self.process_message(msg)
        finally:
            self.stop()

    def stop(self):
        self.nssub.stop()
        self.loop = False
コード例 #5
0
class Listener(object):
    '''PyTroll listener class for reading messages for Trollduction
    '''
    def __init__(self, topics=None, queue=None):
        '''Init Listener object
        '''
        self.topics = topics
        self.queue = queue
        self.subscriber = None
        self.recv = None
        self.create_subscriber()
        self.running = False

    def create_subscriber(self):
        '''Create a subscriber instance using specified addresses and
        message types.
        '''
        if self.subscriber is None:
            if self.topics:
                self.subscriber = NSSubscriber("",
                                               self.topics,
                                               addr_listener=True)
                self.recv = self.subscriber.start().recv

    def add_to_queue(self, msg):
        '''Add message to queue
        '''
        self.queue.put(msg)

    def run(self):
        '''Run listener
        '''

        self.running = True

        for msg in self.recv(1):
            if msg is None:
                if self.running:
                    continue
                else:
                    break

            self.add_to_queue(msg)

    def stop(self):
        '''Stop subscriber and delete the instance
        '''
        self.running = False
        time.sleep(1)
        if self.subscriber is not None:
            self.subscriber.stop()
            self.subscriber = None

    def restart(self):
        '''Restart subscriber
        '''
        self.stop()
        self.create_subscriber()
        self.run()
コード例 #6
0
 def create_subscriber(self):
     '''Create a subscriber instance using specified addresses and
     message types.
     '''
     if self.subscriber is None:
         if self.topics:
             self.subscriber = NSSubscriber("",
                                            self.topics,
                                            addr_listener=True)
             self.recv = self.subscriber.start().recv
コード例 #7
0
ファイル: listener.py プロジェクト: tparker-usgs/trollduction
 def create_subscriber(self):
     '''Create a subscriber instance using specified addresses and
     message types.
     '''
     if self.subscriber is None:
         if self.topics:
             self.subscriber = NSSubscriber("", self.topics,
                                            addr_listener=True)
             self.recv = self.subscriber.start().recv
コード例 #8
0
class AbstractMessageProcessor(Thread):
    """Process Messages
    """
    def __init__(self, services, topics, nameserver="localhost"):
        Thread.__init__(self)
        LOG.debug("Nameserver: {}".format(nameserver))
        self.nssub = NSSubscriber(services,
                                  topics,
                                  True,
                                  nameserver=nameserver)
        self.sub = None
        self.loop = True

    def start(self):
        self.sub = self.nssub.start()
        Thread.start(self)

    def process(self, msg):
        """Process the message.
        """
        del msg
        raise NotImplementedError("process is not implemented!")

    def run(self):
        """Run the trigger.
        """
        try:
            for msg in self.sub.recv(2):
                if not self.loop:
                    break
                if msg is None:
                    continue
                self.process(msg)
        finally:
            self.stop()

    def stop(self):
        """Stop the trigger.
        """
        self.nssub.stop()
        self.loop = False
コード例 #9
0
 def __init__(self, services, topics):
     Thread.__init__(self)
     self.nssub = NSSubscriber(services, topics, True)
     self.sub = None
     self.loop = True
コード例 #10
0
class Listener(object):
    '''PyTroll listener class for reading messages for eg. operational
    product generation.
    '''

    logger = logging.getLogger("Listener")

    def __init__(self,
                 topics=None,
                 queue=None,
                 addresses=None,
                 nameserver="localhost",
                 services=""):
        '''Init Listener object
        '''
        self.topics = topics
        self.queue = queue
        self.services = services
        self.subscriber = None
        self.recv = None
        self.addresses = addresses
        self.nameserver = nameserver
        self.create_subscriber()
        self.running = False

    def create_subscriber(self):
        '''Create a subscriber instance using specified addresses and
        message types.
        '''
        if self.subscriber is None:
            if self.topics:
                self.subscriber = NSSubscriber(self.services,
                                               self.topics,
                                               addr_listener=True,
                                               addresses=self.addresses,
                                               nameserver=self.nameserver)
                self.recv = self.subscriber.start().recv

    def add_to_queue(self, msg):
        '''Add message to queue
        '''
        self.queue.put(msg)

    def run(self):
        '''Run listener
        '''

        self.running = True

        for msg in self.recv(1):
            if msg is None:
                if self.running:
                    continue
                else:
                    break

            self.logger.debug("New message received: %s", str(msg))
            self.add_to_queue(msg)

    def stop(self):
        '''Stop subscriber and delete the instance
        '''
        self.running = False
        time.sleep(1)
        if self.subscriber is not None:
            self.subscriber.stop()
            self.subscriber = None

    def restart(self):
        '''Restart subscriber
        '''
        self.stop()
        self.create_subscriber()
        self.run()
コード例 #11
0
ファイル: trigger.py プロジェクト: ch-k/trollduction
 def __init__(self, services, topics):
     Thread.__init__(self)
     self.nssub = NSSubscriber(services, topics, True)
     self.sub = None
     self.loop = True