コード例 #1
0
ファイル: cacheutil.py プロジェクト: Letbeauty/motiky
 def inter2(*args,**kwargs):
     if cachekey is not None:
         callstr = cachekey
     else:
         params = map(lambda xx:repr(xx),args)
         for (k,v) in kwargs.items():
             params.append('%s=%s'%(k,repr(v)))
         callstr='CALLCACHE::%s(%s)' % (func.func_name,','.join(params))
     retobj = redis.get(callstr)
     if retobj:
         return json.loads(retobj)
     retobj = func(*args,**kwargs)
     rp = redis.pipeline()
     rp.set(callstr,json.dumps(retobj)).expire(callstr,timeout).execute()
     return retobj
コード例 #2
0
ファイル: cacheutil.py プロジェクト: Letbeauty/motiky
def ugc_control_set(user_id,obj_type,obj_id,timeout):
    """
    设置UGC的时间
    可以在执行ugc操作之前先过来set 一下,如果返回True则允许下一步
    False则因为太频繁不允许ugc
    """
    assert type(user_id) == types.IntType
    assert type(timeout) == types.IntType
    q = {
            'user_id':user_id,
            'obj_type':obj_type,
            'obj_id':obj_id
            }
    _key = """UGC::%(user_id)s::%(obj_type)s::%(obj_id)s""" % q
    ret = redis.get(_key)
    if ret != None:
        return False
    else:
        redis.pipeline().set(_key,'on').expire(_key,timeout).execute()
        return True