Source code for biothings.hub.dataindex.idcache

import biothings.utils.redis as redis


[docs] class IDCache(object):
[docs] def mark_done(self, _ids): raise NotImplementedError()
[docs] def load(self, name, id_provider, flush=True): """ name is the cache name id_provider returns batch of ids, ie. list(_ids) flush to delete existing cache """ raise NotImplementedError()
[docs] class RedisIDCache(IDCache): def __init__(self, name, connection_params): self.name = name self.redis_client = redis.RedisClient(connection_params) try: self.redis_client.check() except redis.RedisClientError: self.redis_client.initialize() self.redis_client.check()
[docs] def load(self, id_provider, flush=True): db = self.redis_client.get_db(self.name) if flush: db.flushdb() for _ids in id_provider: dids = dict([(_id, 0) for _id in _ids]) db.mset(dids)
[docs] def mark_done(self, _ids): db = self.redis_client.get_db(self.name) db.delete(*_ids)