Skip to content
This repository was archived by the owner on Mar 31, 2020. It is now read-only.

Commit e1c4548

Browse files
committed
cache caches for better caching
1 parent 44353b9 commit e1c4548

1 file changed

Lines changed: 20 additions & 7 deletions

File tree

src/cache.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,17 @@ class ImageCache:
1111
'''Class used for caching images'''
1212

1313
ratelimit = 0.05
14-
api = json.load(API)
14+
with API.open() as fp:
15+
api = json.load(fp)
1516

1617
def __init__(self, size):
17-
self.queue = mp.Queue(size)
18+
self.manager = mp.Manager()
19+
self.queue = self.manager.Queue(size)
1820
self.worker = None
1921

22+
self.infocache = None
23+
self.hobbycache = None
24+
2025
def __del__(self):
2126
self.stop()
2227

@@ -26,7 +31,7 @@ def __get(self, url, **kwargs):
2631
except ConnectionError as e:
2732
return e
2833

29-
def __parse_image(self, response):
34+
def __parse_image(self, data: dict):
3035
data = response.json()
3136
url = data[0]['url']
3237
response = self.__get(url)
@@ -50,11 +55,19 @@ def __parse_info(self, response):
5055
}
5156

5257
def get_profile(self):
53-
poolsize = len(self.api)
58+
api = [self.api['image']]
59+
if self.infocache is None:
60+
api.append(self.api['info'])
61+
if self.
62+
5463
with mp.Pool(poolsize) as pool:
55-
responses = pool.map(self.__get, self.api.values())
64+
response = pool.map(self.__get, self.api.values())
5665
if ConnectionError not in responses: # TODO Record connection errors
57-
return dict(*responses)
66+
return {
67+
**self.__parse_info(response['info']),
68+
**self.__parse_image(response['image']),
69+
**self.__parse_hobbies(response['hobbies'])
70+
}
5871

5972
def next(self):
6073
return self.queue.get()
@@ -69,7 +82,7 @@ def mainloop(self, queue):
6982
def start(self):
7083
if self.worker is not None and self.worker.is_alive():
7184
self.stop()
72-
self.worker = Process(target=self.mainloop, args=(self.queue,))
85+
self.worker = mp.Process(target=self.mainloop, args=(self.queue,))
7386
self.worker.start()
7487

7588
def stop(self):

0 commit comments

Comments
 (0)