def bulk_get(self, queue, message_ids, project): if project is None: project = '' message_ids = ','.join([ "'%s'" % id for id in map(utils.msgid_decode, message_ids) if id is not None ]) sql = ''' select M.id, content, ttl, julianday() * 86400.0 - created from Queues as Q join Messages as M on qid = Q.id where ttl > julianday() * 86400.0 - created and M.id in (%s) and project = ? and name = ? ''' % message_ids records = self.driver.run(sql, project, queue) for id, content, ttl, age in records: yield { 'id': utils.msgid_encode(id), 'ttl': ttl, 'age': int(age), 'body': content, }
def get(self, queue, message_ids, project): if project is None: project = '' if isinstance(message_ids, six.string_types): message_ids = [message_ids] message_ids = ["'%s'" % utils.msgid_decode(id) for id in message_ids] message_ids = ','.join(message_ids) sql = ''' select M.id, content, ttl, julianday() * 86400.0 - created from Queues as Q join Messages as M on qid = Q.id where ttl > julianday() * 86400.0 - created and M.id in (%s) and project = ? and name = ? ''' % message_ids records = self.driver.run(sql, project, queue) for id, content, ttl, age in records: yield { 'id': utils.msgid_encode(id), 'ttl': ttl, 'age': int(age), 'body': content, }
def bulk_get(self, queue, message_ids, project): if project is None: project = '' message_ids = ','.join( ["'%s'" % id for id in map(utils.msgid_decode, message_ids) if id is not None] ) sql = ''' select M.id, content, ttl, julianday() * 86400.0 - created from Queues as Q join Messages as M on qid = Q.id where ttl > julianday() * 86400.0 - created and M.id in (%s) and project = ? and name = ? ''' % message_ids records = self.driver.run(sql, project, queue) for id, content, ttl, age in records: yield { 'id': utils.msgid_encode(id), 'ttl': ttl, 'age': int(age), 'body': content, }
def it(): for id, content, ttl, age in records: marker_id['next'] = id yield { 'id': utils.msgid_encode(id), 'ttl': ttl, 'age': int(age), 'body': content, }
def __get(self, cid): records = self.driver.run( """ select id, content, ttl, julianday() * 86400.0 - created from Messages join Locked on msgid = id where ttl > julianday() * 86400.0 - created and cid = ?""", cid, ) for id, content, ttl, age in records: yield {"id": utils.msgid_encode(id), "ttl": ttl, "age": int(age), "body": content}
def __delete_claimed(self, id, claim): # Precondition: id exists in a specific queue self.driver.run(''' delete from Messages where id = ? and id in (select msgid from Claims join Locked on id = cid where ttl > julianday() * 86400.0 - created and id = ?) ''', id, utils.cid_decode(claim)) if not self.driver.affected: raise exceptions.ClaimNotPermitted(utils.msgid_encode(id), claim)
def __get(self, cid): records = self.driver.run(''' select id, content, ttl, julianday() * 86400.0 - created from Messages join Locked on msgid = id where ttl > julianday() * 86400.0 - created and cid = ?''', cid) for id, content, ttl, age in records: yield { 'id': utils.msgid_encode(id), 'ttl': ttl, 'age': int(age), 'body': content, }
def first(self, queue, project, sort=1): if project is None: project = '' with self.driver('deferred'): sql = ''' select id, content, ttl, created, julianday() * 86400.0 - created from Messages where ttl > julianday() * 86400.0 - created and qid = ? order by id %s limit 1''' if sort not in (1, -1): raise ValueError(u'sort must be either 1 (ascending) ' u'or -1 (descending)') sql = sql % ('DESC' if sort == -1 else 'ASC') args = [utils.get_qid(self.driver, queue, project)] records = self.driver.run(sql, *args) try: id, content, ttl, created, age = next(records) except StopIteration: raise exceptions.QueueIsEmpty(queue, project) created_unix = utils.julian_to_unix(created) created_iso8601 = timeutils.iso8601_from_timestamp(created_unix) return { 'id': utils.msgid_encode(id), 'ttl': ttl, 'created': created_iso8601, 'age': age, 'body': content, }