mirror of https://github.com/CIRCL/lookyloo
chg: Speedup cache initialization
parent
aa7173d27d
commit
e6e61089b6
|
@ -86,6 +86,7 @@ class CapturesIndex(Mapping):
|
||||||
self.redis = redis
|
self.redis = redis
|
||||||
self.contextualizer = contextualizer
|
self.contextualizer = contextualizer
|
||||||
self.__cache: Dict[str, CaptureCache] = {}
|
self.__cache: Dict[str, CaptureCache] = {}
|
||||||
|
self._quick_init()
|
||||||
|
|
||||||
def __getitem__(self, uuid: str) -> CaptureCache:
|
def __getitem__(self, uuid: str) -> CaptureCache:
|
||||||
if uuid in self.__cache:
|
if uuid in self.__cache:
|
||||||
|
@ -131,6 +132,22 @@ class CapturesIndex(Mapping):
|
||||||
self.redis.flushdb()
|
self.redis.flushdb()
|
||||||
self.__cache = {}
|
self.__cache = {}
|
||||||
|
|
||||||
|
def _quick_init(self) -> None:
|
||||||
|
'''Initialize the cache with a list of UUIDs, with less back and forth with redis.
|
||||||
|
Only get recent captures.'''
|
||||||
|
p = self.redis.pipeline()
|
||||||
|
for directory in self.redis.hvals('lookup_dirs'):
|
||||||
|
p.hgetall(directory)
|
||||||
|
for cache in p.execute():
|
||||||
|
if not cache:
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
cc = CaptureCache(cache)
|
||||||
|
except LookylooException as e:
|
||||||
|
self.logger.warning(e)
|
||||||
|
continue
|
||||||
|
self.__cache[cc.uuid] = cc
|
||||||
|
|
||||||
def _get_capture_dir(self, uuid: str) -> Path:
|
def _get_capture_dir(self, uuid: str) -> Path:
|
||||||
# Try to get from the recent captures cache in redis
|
# Try to get from the recent captures cache in redis
|
||||||
capture_dir = self.redis.hget('lookup_dirs', uuid)
|
capture_dir = self.redis.hget('lookup_dirs', uuid)
|
||||||
|
|
Loading…
Reference in New Issue