在webpy中使用Flask-Cache。我在xx工作在请求上下文之外时遇到错误<type'exception.runtimeerror'=“”> </type>

时间:2012-10-17 07:00:18

标签: python caching web.py

初始缓存对象代码如下:

pageCache = Cache()
cacheDir = os.path.join(path.dirname(path.dirname(__file__)),'pageCache')
pageCache.init_app(flaskApp,config={'CACHE_TYPE': 'filesystem','CACHE_THRESHOLD':1>>10>>10,'CACHE_DIR': cacheDir })

我使用pageCache如下:

class CodeList:
    """
    show code list
    """
    @pageCache.cached(timeout=60)
    def GET(self):
        i = web.input()
        sort = i.get('sort','newest')
        pageNo = int(i.get('page','1'))
        if i.get('pageSize'):
            pageSize = int(i.get('pageSize'))
        else:
            pageSize = DEFAULT_LIST_PAGE_SIZE
        if pageSize > 50:
            pageSize = 50
        items = csModel.getCodeList(sort=sort,pageNo=pageNo,pageSize=pageSize)
        totalCount = csModel.getCodeCount()
        pageInfo = (pageNo,pageSize,totalCount)
        return render.code.list(items,pageInfo)

当我请求此页面时,我有一个例外:

  

在/ code-snippet /处输入'exceptions.RuntimeError'   在请求上下文之外工作

     

Python C:\ Python27 \ lib \ site-packages \ flask-0.9-py2.7.egg \ flask \ globals.py in&gt; _lookup_object,第18行

1 个答案:

答案 0 :(得分:1)

Flask-Cache是​​ - 顾名思义 - 一个Flask扩展。因此,如果您不使用Flask,则无法正常使用它。

您可以使用werkzeug.cache - Flask-Cache也在使用它。但是,根据您的需要,最好使用例如直接memcached - 当使用诸如werkzeug.cache之类的包装器时,你会失去缓存引擎的所有高级功能,因为它包含了一个相当简单/简约的API。