def data_callback(c, data): unpacked = nsq.unpack_response(data) if unpacked[0] == nsq.FRAME_TYPE_MESSAGE: c.send(nsq.ready(1)) msg = nsq.decode_message(unpacked[1]) print msg.id, msg.body c.send(nsq.finish(msg.id))
def send_rdy(self, value): try: self.send(nsq.ready(value)) except Exception, e: self.close() self.trigger("error", conn=self, error=nsq.SendError("failed to send RDY %d" % value, e)) return False
def test_sync_receive_messages(): c = nsq.SyncConn() c.connect("127.0.0.1", 4150) c.send(nsq.identify({'short_id': 'test', 'long_id': 'test.example'})) c.send(nsq.subscribe('test', 'ch')) mock_response_write(c, nsq.FRAME_TYPE_RESPONSE, 'OK') mock_response_write(c, nsq.FRAME_TYPE_RESPONSE, 'OK') resp = c.read_response() unpacked = nsq.unpack_response(resp) assert unpacked[0] == nsq.FRAME_TYPE_RESPONSE assert unpacked[1] == six.b('OK') resp = c.read_response() unpacked = nsq.unpack_response(resp) assert unpacked[0] == nsq.FRAME_TYPE_RESPONSE assert unpacked[1] == six.b('OK') for i in range(10): c.send(nsq.ready(1)) body = '{"data": {"test_key": %d}}' % i body = body.encode('utf-8') ts = int(time.time() * 1000 * 1000) mock_response_write_message(c, ts, 0, i, body) resp = c.read_response() unpacked = nsq.unpack_response(resp) assert unpacked[0] == nsq.FRAME_TYPE_MESSAGE msg = nsq.decode_message(unpacked[1]) assert msg.timestamp == ts assert msg.id == ("%016d" % i).encode('utf-8') assert msg.attempts == 0 assert msg.body == body
def test_sync_receive_messages(): c = nsq.SyncConn() c.connect("127.0.0.1", 4150) c.send(nsq.identify({'short_id': 'test', 'long_id': 'test.example'})) c.send(nsq.subscribe('test', 'ch')) mock_response_write(c, nsq.FRAME_TYPE_RESPONSE, 'OK') mock_response_write(c, nsq.FRAME_TYPE_RESPONSE, 'OK') resp = c.read_response() unpacked = nsq.unpack_response(resp) assert unpacked[0] == nsq.FRAME_TYPE_RESPONSE assert unpacked[1] == 'OK' resp = c.read_response() unpacked = nsq.unpack_response(resp) assert unpacked[0] == nsq.FRAME_TYPE_RESPONSE assert unpacked[1] == 'OK' for i in range(10): c.send(nsq.ready(1)) body = '{"data": {"test_key": %d}}' % i ts = int(time.time() * 1000 * 1000) mock_response_write_message(c, ts, 0, i, body) resp = c.read_response() unpacked = nsq.unpack_response(resp) assert unpacked[0] == nsq.FRAME_TYPE_MESSAGE msg = nsq.decode_message(unpacked[1]) assert msg.timestamp == ts assert msg.id == "%016d" % i assert msg.attempts == 0 assert msg.body == body
def send_rdy(self, value): try: self.send(nsq.ready(value)) except Exception, e: self.close() self.trigger('error', conn=self, error=nsq.SendError('failed to send RDY %d' % value, e)) return False
def connect_callback(c): print "connected" c.send(nsq.subscribe('test', 'ch', 'a', 'b')) c.send(nsq.ready(1))
while True: if len(self.buffer) >= size: break packet = self.s.recv(4096) if not packet: raise Exception("failed to read %d" % size) self.buffer += packet data = self.buffer[:size] self.buffer = self.buffer[size:] return data def read_response(self): size = struct.unpack('>l', self._readn(4))[0] return self._readn(size) def send(self, data): self.s.send(data) if __name__ == '__main__': c = SyncConn() c.connect("127.0.0.1", 4150) c.send(nsq.subscribe('test', 'ch', 'a', 'b')) for i in xrange(10): c.send(nsq.ready(1)) resp = c.read_response() unpacked = nsq.unpack_response(resp) msg = nsq.decode_message(unpacked[1]) print msg.id, msg.body c.send(nsq.finish(msg.id))