def test_msg_claimed_filter(self): now = timeutils.utcnow_ts() unclaimed_msg = _create_sample_message() self.assertFalse(utils.msg_claimed_filter(unclaimed_msg, now)) claimed_msg = _create_sample_message(claimed=True) self.assertTrue(utils.msg_claimed_filter(claimed_msg, now)) # NOTE(kgriffs): Has a claim ID, but the claim is expired claimed_msg.claim_expires = now - 60 self.assertFalse(utils.msg_claimed_filter(claimed_msg, now))
def _find_first_unclaimed(self, queue, project, limit): """Find the first unclaimed message in the queue.""" msgset_key = utils.msgset_key(queue, project) now = timeutils.utcnow_ts() # TODO(kgriffs): Generalize this paging pattern (DRY) offset = 0 while True: msg_keys = self._client.zrange(msgset_key, offset, offset + limit - 1) if not msg_keys: return None offset += len(msg_keys) messages = [ MessageEnvelope.from_redis(msg_key, self._client) for msg_key in msg_keys ] for msg in messages: if msg and not utils.msg_claimed_filter(msg, now): return msg.id
def _find_first_unclaimed(self, queue, project, limit): """Find the first unclaimed message in the queue.""" msgset_key = utils.msgset_key(queue, project) now = timeutils.utcnow_ts() # TODO(kgriffs): Generalize this paging pattern (DRY) offset = 0 while True: msg_keys = self._client.zrange(msgset_key, offset, offset + limit - 1) if not msg_keys: return None offset += len(msg_keys) messages = [MessageEnvelope.from_redis(msg_key, self._client) for msg_key in msg_keys] for msg in messages: if msg and not utils.msg_claimed_filter(msg, now): return msg.id