我们从Python开源项目中,提取了以下10个代码示例,用于说明如何使用zmq.RCVMORE。
def recv(self): '''Recv a message with topic, payload. Topic is a utf-8 encoded string. Returned as unicode object. Payload is a msgpack serialized dict. Returned as a python dict. Any addional message frames will be added as a list in the payload dict with key: '__raw_data__' . ''' topic = self.socket.recv_string() payload = serializer.loads(self.socket.recv(), encoding='utf-8') extra_frames = [] while self.socket.get(zmq.RCVMORE): extra_frames.append(self.socket.recv()) if extra_frames: payload['__raw_data__'] = extra_frames return topic, payload
def feedback_loop(self, *args): # feedback socket ctx = zmq.Context() socket = ctx.socket(zmq.SUB) socket.setsockopt(zmq.SUBSCRIBE, "") socket.connect(config.get("broadcaster-feedback-url", "tcp://localhost:9110")) print "brc feedback channel connected" while True: msg = [socket.recv()] while socket.getsockopt(zmq.RCVMORE): msg.append(socket.recv()) print "feedback msg" if len(msg) == 3: self.on_feedback_msg(*msg) else: print "bad feedback message", len(msg)
def recv_multipart(self, flags=0, copy=True, track=False): """receive a multipart message as a list of bytes or Frame objects Parameters ---------- flags : int, optional Any supported flag: NOBLOCK. If NOBLOCK is set, this method will raise a ZMQError with EAGAIN if a message is not ready. If NOBLOCK is not set, then this method will block until a message arrives. copy : bool, optional Should the message frame(s) be received in a copying or non-copying manner? If False a Frame object is returned for each part, if True a copy of the bytes is made for each frame. track : bool, optional Should the message frame(s) be tracked for notification that ZMQ has finished with it? (ignored if copy=True) Returns ------- msg_parts : list A list of frames in the multipart message; either Frames or bytes, depending on `copy`. """ parts = [self.recv(flags, copy=copy, track=track)] # have first part already, only loop while more to receive while self.getsockopt(zmq.RCVMORE): part = self.recv(flags, copy=copy, track=track) parts.append(part) return parts
def has_more(self): return self.socket.getsockopt(zmq.RCVMORE)
def feedback_loop(self, *args): # feedback socket ctx = zmq.Context() socket = ctx.socket(zmq.SUB) socket.setsockopt(zmq.SUBSCRIBE, "") socket.connect(config.get("radar-feedback-url", "tcp://localhost:7678")) print "radar feedback channel connected" while True: msg = [socket.recv()] while socket.getsockopt(zmq.RCVMORE): msg.append(socket.recv()) if len(msg) == 2: self.on_feedback_msg(*msg) else: print "bad feedback message", len(msg)