annotate whoisi_cache.py @ 2:f9ee6f8f7021

added whoisi_cache.py
author Atul Varma <varmaa@toolness.com>
date Thu, 31 Dec 2009 12:30:18 -0800
parents
children 8c35fbdf5f43
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 MAX_PEOPLE_REQ_SIZE = 100
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 def split_seq(seq, size):
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4 """
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 Split up the given sequence into pieces of the given size.
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 Taken from http://code.activestate.com/recipes/425044/.
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 """
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10 return [seq[i:i+size] for i in range(0, len(seq), size)]
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 class WhoisiCache(object):
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 APP_NAME = "whoisi-cache"
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15 def __init__(self, server, batch_size=MAX_PEOPLE_REQ_SIZE):
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 self.server = server
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17 self.batch_size = batch_size
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
18 self.people = []
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 def update(self):
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 pid = self.server.get_max_person_id(app=self.APP_NAME)
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 interval = range(len(self.people) + 1, pid + 1)
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 if interval:
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24 subintervals = split_seq(interval, self.batch_size)
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 for subinterval in subintervals:
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 people = self.server.get_people(app=self.APP_NAME,
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 first=subinterval[0],
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 last=subinterval[-1])
f9ee6f8f7021 added whoisi_cache.py
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 self.people.extend(people)