def _get(self, queue, message_id, project, count=False): if project is None: project = '' mid = utils.msgid_decode(message_id) if mid is None: raise errors.MessageDoesNotExist(message_id, queue, project) try: j = sa.join(tables.Messages, tables.Queues, tables.Messages.c.qid == tables.Queues.c.id) sel = sa.sql.select([ tables.Messages.c.body, tables.Messages.c.ttl, tables.Messages.c.created, tables.Messages.c.cid ]) if count: sel = sa.sql.select([sfunc.count(tables.Messages.c.id)]) sel = sel.select_from(j) and_stmt = [tables.Messages.c.id == mid] and_stmt.extend(self._and_stmt_with_ttl(queue, project)) sel = sel.where(sa.and_(*and_stmt)) return self.driver.get(sel) except utils.NoResult: raise errors.MessageDoesNotExist(message_id, queue, project)
def _find_message(self, queue, message_id, project): try: return self._client.get_object( utils._message_container(queue, project), message_id) except swiftclient.ClientException as exc: if exc.http_status == 404: raise errors.MessageDoesNotExist(message_id, queue, project) else: raise
def get(self, queue, message_id, project=None): if not self._queue_ctrl.exists(queue, project): raise errors.QueueDoesNotExist(queue, project) message = Message.from_redis(message_id, self._client) now = timeutils.utcnow_ts() if message and not utils.msg_expired_filter(message, now): return message.to_basic(now) else: raise errors.MessageDoesNotExist(message_id, queue, project)