Example #1
0
def stat_message(message, now):
    """Creates a stat document from the given message, relative to now."""
    oid = message['_id']
    created = oid_utc(oid)
    age = timeutils.delta_seconds(created, now)

    return {
        'id': str(oid),
        'age': int(age),
        'created': timeutils.isotime(created),
    }
Example #2
0
def stat_message(message, now):
    """Creates a stat document from the given message, relative to now."""
    oid = message['_id']
    created = oid_utc(oid)
    age = timeutils.delta_seconds(created, now)

    return {
        'id': str(oid),
        'age': int(age),
        'created': timeutils.isotime(created),
    }
Example #3
0
    def first(self, queue, project=None, sort=1):
        if project is None:
            project = ''

        qid = utils.get_qid(self.driver, queue, project)

        sel = sa.sql.select([tables.Messages.c.id,
                             tables.Messages.c.body,
                             tables.Messages.c.ttl,
                             tables.Messages.c.created],
                            sa.and_(
                                tables.Messages.c.ttl >
                                sfunc.now() - tables.Messages.c.created,
                                tables.Messages.c.qid == qid))
        if sort not in (1, -1):
            raise ValueError(u'sort must be either 1 (ascending) '
                             u'or -1 (descending)')

        order = sa.asc
        if sort == -1:
            order = sa.desc

        sel = sel.order_by(order(tables.Messages.c.id))

        try:
            id, body, ttl, created = self.driver.get(sel)
        except utils.NoResult:
            raise errors.QueueIsEmpty(queue, project)

        created_iso = timeutils.isotime(created)
        return {
            'id': utils.msgid_encode(id),
            'ttl': ttl,
            'created': created_iso,
            'age': int((timeutils.utcnow() - created).seconds),
            'body': body,
        }