Skip to content

Instantly share code, notes, and snippets.

@jamiesun
Created July 1, 2013 03:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamiesun/5898153 to your computer and use it in GitHub Desktop.
Save jamiesun/5898153 to your computer and use it in GitHub Desktop.
python memcached
#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