def __init__(self, socket, pipe=False): # type: (object, object) -> object """Create IOPub thread Parameters ---------- socket: zmq.PUB Socket the socket on which messages will be sent. pipe: bool Whether this process should listen for IOPub messages piped from subprocesses. """ self.socket = socket self.background_socket = BackgroundSocket(self) self._master_pid = os.getpid() self._pipe_flag = pipe self.io_loop = IOLoop() if pipe: self._setup_pipe_in() self._local = threading.local() self._events = {} self._setup_event_pipe() self.thread = threading.Thread(target=self._thread_main) self.thread.daemon = True
def __init__(self, socket, pipe=False): self.socket = socket self.background_socket = BackgroundSocket(self) self._master_pid = os.getpid() self._pipe_flag = pipe self.io_loop = IOLoop() if pipe: self._setup_pipe_in() self.thread = threading.Thread(target=self._thread_main) self.thread.daemon = True
def _send_fireball(self, mtype, data, f_size): if len(data) < 3: logger.error('no data to send') return [] self.loop = IOLoop().instance() self.socket.close() self.socket = self.context.socket(zmq.DEALER) self.socket.connect(self.remote) self.stream = ZMQStream(self.socket) self.stream.on_recv(self._handle_message_fireball) self.stream.io_loop.call_later(SNDTIMEO, self._fireball_timeout) self.response = [] if PYVERSION == 3: if isinstance(data, bytes): data = data.decode('utf-8') data = json.loads(data) if not isinstance(data, list): data = [data] if (len(data) % f_size) == 0: self.num_responses = int((len(data) / f_size)) else: self.num_responses = int((len(data) / f_size)) + 1 logger.debug('responses expected: %i' % self.num_responses) batch = [] for d in data: batch.append(d) if len(batch) == f_size: Msg(mtype=Msg.INDICATORS_CREATE, token=self.token, data=batch).send(self.socket) batch = [] if len(batch): Msg(mtype=Msg.INDICATORS_CREATE, token=self.token, data=batch).send(self.socket) logger.debug("starting loop to receive") self.loop.start() # clean up FDs self.loop.close() self.stream.close() self.socket.close() return self.response
def _send_fireball(self, mtype, data): if len(data) < 3: logger.error('no data to send') return [] self.loop = IOLoop() self.socket = self.context.socket(zmq.DEALER) self.socket.connect(self.remote) timeout = time.time() + SNDTIMEO self.loop.add_timeout(timeout, self._fireball_timeout) self.response = [] self.loop.add_handler(self.socket, self._handle_message_fireball, zmq.POLLIN) if PYVERSION == 3: if isinstance(data, bytes): data = data.decode('utf-8') data = json.loads(data) if not isinstance(data, list): data = [data] if (len(data) % FIREBALL_SIZE) == 0: self.num_responses = int((len(data) / FIREBALL_SIZE)) else: self.num_responses = int((len(data) / FIREBALL_SIZE)) + 1 logger.debug('responses expected: %i' % self.num_responses) batch = [] for d in data: batch.append(d) if len(batch) == FIREBALL_SIZE: Msg(mtype=Msg.INDICATORS_CREATE, token=self.token, data=batch).send(self.socket) batch = [] if len(batch): Msg(mtype=Msg.INDICATORS_CREATE, token=self.token, data=batch).send(self.socket) logger.debug("starting loop to receive") self.loop.start() self.loop.close() self.socket.close() return self.response
def __init__(self, queue): self.queue = queue self.io_loop = IOLoop(make_current=False) context = zmq.Context.instance() self.pause_socket = context.socket(zmq.REP) self.pause_socket_port = self.pause_socket.bind_to_random_port( "tcp://127.0.0.1") self.status_socket = context.socket(zmq.PULL) self.status_socket_port = self.status_socket.bind_to_random_port( "tcp://127.0.0.1") self.pause_stream = ZMQStream(self.pause_socket, self.io_loop) self.status_stream = ZMQStream(self.status_socket, self.io_loop) self.pause_stream.on_recv(self.recv_pause) self.status_stream.on_recv(self.recv_status) self.thread = threading.Thread(target=self._thread_main) self.thread.daemon = True
def setUp(self): self.loop = IOLoop() self.loop.make_current() super(TestFutureSocket, self).setUp()