Created
July 1, 2013 03:18
-
-
Save jamiesun/5898153 to your computer and use it in GitHub Desktop.
python memcached
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#coding=:utf-8 | |
import hashlib | |
from settings import settings | |
import memcache | |
import cPickle as pickle | |
mcache = memcache.Client(settings['memcache_url'],debug=0) | |
def cache_data(category='all',timeout=3600): | |
def func_warp1(func): | |
def func_wrap2(*args, **kargs): | |
sig = _mk_cache_sig(*args, **kargs) | |
key = "%s:%s:%s"%(category,func.__name__, sig) | |
data = mcache.get(key) | |
if data is not None: | |
rdata = pickle.loads(data) | |
#print "hits cache data key=%s data=%s"%(key,rdata) | |
return rdata | |
data = func(*args, **kargs) | |
if data is not None: | |
pdata = pickle.dumps(data,True) | |
#print "set cache data key=%s data=%s"%(key,data) | |
print mcache.set(key,pdata,timeout) | |
return data | |
return func_wrap2 | |
return func_warp1 | |
def _mk_cache_sig(*args, **kargs): | |
ckey = getattr(args[0],"cache_key") | |
src_data = '' | |
if ckey: | |
src_data = ckey + repr(args[1:]) + repr(kargs) | |
else: | |
src_data = repr(args) + repr(kargs) | |
#print src_data | |
m = hashlib.md5(src_data) | |
sig = m.hexdigest() | |
return sig |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment