def sendrecv(self, cmd, data, dest=None, port=None): if (dest is None) or (dest == 'localhost'): dest = '127.0.0.1' else: dest = CloudHost.instance_local_ip(dest) if port is None: port = self._rrport rraddr = 'tcp://%s:%d' % (dest, port) JBoxAsyncJob.log_debug("sendrecv to %s. connecting...", rraddr) sock = self._ctx.socket(zmq.REQ) sock.setsockopt(zmq.LINGER, 5 * 1000) sock.connect(rraddr) poller = zmq.Poller() poller.register(sock, zmq.POLLOUT) if poller.poll(10 * 1000): sock.send_json(self._make_msg(cmd, data)) else: sock.close() raise IOError("could not connect to %s", rraddr) poller.modify(sock, zmq.POLLIN) if poller.poll(10 * 1000): msg = sock.recv_json() else: sock.close() raise IOError("did not receive anything from %s", rraddr) JBoxAsyncJob.log_debug("sendrecv to %s. received.", rraddr) sock.close() return msg
def sendrecv(self, cmd, data, dest=None, port=None): if (dest is None) or (dest == 'localhost'): dest = '127.0.0.1' else: dest = CloudHost.instance_local_ip(dest) if port is None: port = self._rrport rraddr = 'tcp://%s:%d' % (dest, port) JBoxAsyncJob.log_debug("sendrecv to %s. connecting...", rraddr) sock = self._ctx.socket(zmq.REQ) sock.setsockopt(zmq.LINGER, 5*1000) sock.connect(rraddr) poller = zmq.Poller() poller.register(sock, zmq.POLLOUT) if poller.poll(10*1000): sock.send_json(self._make_msg(cmd, data)) else: sock.close() raise IOError("could not connect to %s", rraddr) poller.modify(sock, zmq.POLLIN) if poller.poll(10*1000): msg = sock.recv_json() else: sock.close() raise IOError("did not receive anything from %s", rraddr) JBoxAsyncJob.log_debug("sendrecv to %s. received.", rraddr) sock.close() return msg
def __init__(self, ports, mode): self._mode = mode self._ctx = zmq.Context() ppmode = zmq.PUSH if (mode == JBoxAsyncJob.MODE_PUB) else zmq.PULL self._push_pull_sock = self._ctx.socket(ppmode) rrmode = zmq.REQ if (mode == JBoxAsyncJob.MODE_PUB) else zmq.REP local_ip = CloudHost.instance_local_ip() JBoxAsyncJob.log_debug("local hostname [%s]", local_ip) ppbindaddr = 'tcp://%s:%d' % ( local_ip, ports[0], ) ppconnaddr = 'tcp://%s:%d' % ( local_ip, ports[0], ) rraddr = 'tcp://%s:%d' % ( local_ip, ports[1], ) self._rrport = ports[1] self._poller = zmq.Poller() if mode == JBoxAsyncJob.MODE_PUB: self._push_pull_sock.bind(ppbindaddr) else: self._push_pull_sock.connect(ppconnaddr) self._poller.register(self._push_pull_sock, zmq.POLLIN) self._req_rep_sock = self._ctx.socket(rrmode) self._req_rep_sock.bind(rraddr)
def __init__(self, ports, mode): self._mode = mode self._ctx = zmq.Context() ppmode = zmq.PUSH if (mode == JBoxAsyncJob.MODE_PUB) else zmq.PULL self._push_pull_sock = self._ctx.socket(ppmode) rrmode = zmq.REQ if (mode == JBoxAsyncJob.MODE_PUB) else zmq.REP local_ip = CloudHost.instance_local_ip() JBoxAsyncJob.log_debug("local hostname [%s]", local_ip) ppbindaddr = 'tcp://%s:%d' % (local_ip, ports[0],) ppconnaddr = 'tcp://%s:%d' % (local_ip, ports[0],) rraddr = 'tcp://%s:%d' % (local_ip, ports[1],) self._rrport = ports[1] self._poller = zmq.Poller() if mode == JBoxAsyncJob.MODE_PUB: self._push_pull_sock.bind(ppbindaddr) else: self._push_pull_sock.connect(ppconnaddr) self._poller.register(self._push_pull_sock, zmq.POLLIN) self._req_rep_sock = self._ctx.socket(rrmode) self._req_rep_sock.bind(rraddr)