def poll(self): print ('@poll(%d):started...' % self.instance) print ('@poll(%d):creating GQueue.Queue...' % self.instance) sessions = GQueue() print ('@poll(%d):creating Thread...' % self.instance) threads = [gevent.spawn(self.task, netdev, sessions) for netdev in self.netdevices] gevent.sleep(0) gevent.joinall(threads) data = {} while not sessions.empty(): data.update(sessions.get()) self.write(data) print ('@poll(%d):Done!' % self.instance)
def api_events_log(ws) -> None: # Add new queue for websocket q = GQueue() with ws_locks[WS_EVENT_LOG]: ws_queues[WS_EVENT_LOG][ws] = q try: while not ws.closed: text = q.get() ws.send(text) except Exception as e: logger.exception("api_events_log") # Remove queue with ws_locks[WS_EVENT_LOG]: del ws_queues[WS_EVENT_LOG][ws]
def queue(self, max_size=None): max_size = max_size if max_size is not None else self.queue_max_size return GQueue(maxsize=max_size or 0)