2
|
1 MAX_PEOPLE_REQ_SIZE = 100
|
|
2
|
|
3 def split_seq(seq, size):
|
|
4 """
|
|
5 Split up the given sequence into pieces of the given size.
|
|
6
|
|
7 Taken from http://code.activestate.com/recipes/425044/.
|
|
8 """
|
|
9
|
|
10 return [seq[i:i+size] for i in range(0, len(seq), size)]
|
|
11
|
|
12 class WhoisiCache(object):
|
|
13 APP_NAME = "whoisi-cache"
|
|
14
|
|
15 def __init__(self, server, batch_size=MAX_PEOPLE_REQ_SIZE):
|
|
16 self.server = server
|
|
17 self.batch_size = batch_size
|
|
18 self.people = []
|
|
19
|
|
20 def update(self):
|
|
21 pid = self.server.get_max_person_id(app=self.APP_NAME)
|
|
22 interval = range(len(self.people) + 1, pid + 1)
|
|
23 if interval:
|
|
24 subintervals = split_seq(interval, self.batch_size)
|
|
25 for subinterval in subintervals:
|
|
26 people = self.server.get_people(app=self.APP_NAME,
|
|
27 first=subinterval[0],
|
|
28 last=subinterval[-1])
|
|
29 self.people.extend(people)
|