只需要一种选项:在1分钟内可实现!将函数执行结果缓存到memcached的装饰器

@cached(time=1200)
def functionToCache(arguments):
  return arguments

在什么时候会很方便?

尤其是在开发涉及到爬取数据或外部数据的时候,我感到非常方便。

用法。

1. 运行pip install python-memcached命令安装python-memcached模块。
2. 将以下Python文件保存在合适的位置,并导入cached函数。
3. 在函数定义时,使用@cached(time=1000)的形式进行装饰。

示例中文“片段”。

def decorator_with_args(decorator_to_enhance):
  """ 
  デコレータに引数を与えて返す関数
  """
  def decorator_maker(*args, **kwargs) :
    def decorator_wrapper(func) :
      return decorator_to_enhance(func, *args, **kwargs)
    return decorator_wrapper
  return decorator_maker

@decorator_with_args
def cached(func, *args, **kwargs):
  """
  関数の名前、引数をキーにして結果をキャッシュするデコレータ
  使い方
    @cached(time=1200)
    def functionToCache(arguments):
  """
  def wrapper(*pars):
    key = func.__name__ + '_' + '_'.join([str(par) for par in pars])
    print key
    client = memcache.Client(['127.0.0.1:11211'])
    val = client.get(key)
    if not val:
      val = func(*pars)
      try:
        client.set(key, val, time=kwargs['time'])
      except:
        pass #適当にどうぞ
    return val
  return wrapper


请以母语中文进行改写,只需要一种方案:

请参考

gae-memcache-decorator.py
https://gist.github.com/abahgat/1395810

gae-memcache-decorator.py
https://gist.github.com/abahgat/1395810

广告
将在 10 秒后关闭
bannerAds