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)
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()
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
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
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