def query_or_cache(entity, start, stop, force = False):
if force:
entities = TwitterEntityFreq.query(
TwitterEntityFreq.entity == entity,
TwitterEntityFreq.timestamp > start,
TwitterEntityFreq.timestamp <= stop
).order(TwitterEntityFreq.timestamp)
data = [MockTWE(i) for i in entities]
memcache.set(MC_GUARD%entity,1,30)
memcache.set(MC_KEY%entity, data)
return [i for i in data]
nq = memcache.get(MC_GUARD%entity)
data = memcache.get(MC_KEY%entity)
td = timedelta(seconds = 30)
if data:
last = data[-1].timestamp
if stop - last > td and not nq:
entities = TwitterEntityFreq.query(
TwitterEntityFreq.entity == entity,
TwitterEntityFreq.timestamp > last,
TwitterEntityFreq.timestamp <= stop
).order(TwitterEntityFreq.timestamp)
data += [MockTWE(i) for i in entities]
memcache.set(MC_GUARD%entity,1,30)
memcache.set(MC_KEY%entity, data)
elif not nq:
entities = TwitterEntityFreq.query(
TwitterEntityFreq.entity == entity,
TwitterEntityFreq.timestamp > start,
TwitterEntityFreq.timestamp <= stop
).order(TwitterEntityFreq.timestamp)
data = [MockTWE(i) for i in entities]
memcache.set(MC_GUARD%entity,1,30)
memcache.set(MC_KEY%entity, data)
return [i for i in data if i.timestamp > start and i.timestamp <= stop]
评论列表
文章目录