Пример #1
0
    def test_queue_objects(self):
        queue = RedisQueue("test-queue", maxsize=100, host=REDIS_HOST)
        # put int
        queue.put(1)
        v = queue.get_nowait()
        assert v == 1
        assert isinstance(v, int)

        # put str
        queue.put("a")
        v = queue.get_nowait()
        assert v == "a"
        assert isinstance(v, str)

        # put float
        queue.put(1.)

        v = queue.get_nowait()
        assert v == 1.
        assert isinstance(v, float)

        # put list
        queue.put([1, 3, 4, 5, "a", "b", "c", 1., 2., 3.])
        v = queue.get_nowait()
        assert v == [1, 3, 4, 5, "a", "b", "c", 1., 2., 3.]
        assert isinstance(v, list)

        # put dict
        queue.put({"x": "y"})
        v = queue.get_nowait()
        assert v == {"x": "y"}
        assert isinstance(v, dict)
Пример #2
0
    def test_queue_size(self):
        print(REDIS_HOST)
        print(os.getenv('REDIS_PORT_6379_TCP_ADDR'))
        queue = RedisQueue("test-queue-size-1", maxsize=1, host=REDIS_HOST)
        queue.put(1)
        with pytest.raises(Full):
            queue.put(1)

        queue = RedisQueue("test-queue-size-2", maxsize=2, host=REDIS_HOST)
        queue.put(1)
        queue.put(1)
        with pytest.raises(Full):
            queue.put(1)
        queue.get()
        queue.get()
        with pytest.raises(Empty):
            queue.get_nowait()
Пример #3
0
class AbstractParallelObserver(object):
    def __init__(self, number_of_islands=None, *args, **kwargs):
        assert isinstance(number_of_islands, int)
        super(AbstractParallelObserver, self).__init__()
        self.queue = RedisQueue(name=str(uuid4()), namespace=self.__name__)
        self.clients = {}
        self.run = True
        self.t = None
        for i in range(number_of_islands):
            self._create_client(i)

    def _create_client(self, i):
        raise NotImplementedError

    def _listen(self):
        print("Start %s" % self.__name__)
        while self.run:
            try:
                message = self.queue.get_nowait()
                self._process_message(message)
            except Empty:
                pass
            except Exception as e:
                print(e)

        print("Exit %s" % self.__name__)

    def _process_message(self, message):
        raise NotImplementedError

    def start(self):
        """
        Starts the observer. It is called internally before the optimization starts.
        The observer will not report anything until start has been called.

        """
        self.run = True
        self.t = Thread(target=self._listen)
        self.t.start()

    def finish(self):
        """
        Stops the observer. The observer will not report anything else from the optimization.
        """
        self.run = False
Пример #4
0
class AbstractParallelObserver(object):
    def __init__(self, number_of_islands=None, *args, **kwargs):
        assert isinstance(number_of_islands, int)
        super(AbstractParallelObserver, self).__init__()
        self.queue = RedisQueue(name=str(uuid4()), namespace=self.__name__)
        self.clients = {}
        self.run = True
        self.t = None
        for i in range(number_of_islands):
            self._create_client(i)

    def _create_client(self, i):
        raise NotImplementedError

    def _listen(self):
        print("Start %s" % self.__name__)
        while self.run:
            try:
                message = self.queue.get_nowait()
                self._process_message(message)
            except Empty:
                pass
            except Exception as e:
                print(e)

        print("Exit %s" % self.__name__)

    def _process_message(self, message):
        raise NotImplementedError

    def start(self):
        """
        Starts the observer. It is called internally before the optimization starts.
        The observer will not report anything until start has been called.

        """
        self.run = True
        self.t = Thread(target=self._listen)
        self.t.start()

    def finish(self):
        """
        Stops the observer. The observer will not report anything else from the optimization.
        """
        self.run = False
Пример #5
0
 def test_queue_len(self):
     queue = RedisQueue("test-queue-len", maxsize=100, host=REDIS_HOST)
     assert queue.length == 0
     queue.put(1)
     assert queue.length == 1
     queue.put(1)
     assert queue.length == 2
     queue.put(1)
     assert queue.length == 3
     queue.get_nowait()
     assert queue.length == 2
     queue.get_nowait()
     assert queue.length == 1
     queue.get_nowait()
     assert queue.length == 0
Пример #6
0
class AbstractParallelObserver(object):
    def __init__(self, number_of_islands=None, *args, **kwargs):
        assert isinstance(number_of_islands, int)
        super(AbstractParallelObserver, self).__init__()
        self.queue = RedisQueue(name=str(uuid4()), namespace=self.__name__)
        self.clients = {}
        self.run = True
        for i in range(number_of_islands):
            self._create_client(i)

    def _create_client(self, i):
        raise NotImplementedError

    def _listen(self):
        print("Start %s" % self.__name__)
        while self.run:
            try:
                message = self.queue.get_nowait()
                self._process_message(message)
            except Empty:
                pass
            except Exception as e:
                print(e)

        print("Exit %s" % self.__name__)

    def _process_message(self, message):
        raise NotImplementedError

    def start(self):
        self.run = True
        self.t = Thread(target=self._listen)
        self.t.start()

    def finish(self):
        self.run = False