query_cache.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:oscars2016 作者: 0x0ece 项目源码 文件源码
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]
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号