Python 在webpy中使用Flask缓存。我犯了一个错误<;类型';异常。运行时错误'&燃气轮机;在xx,在请求上下文之外工作
初始缓存对象代码如下所示:Python 在webpy中使用Flask缓存。我犯了一个错误<;类型';异常。运行时错误'&燃气轮机;在xx,在请求上下文之外工作,python,caching,web.py,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 }) class CodeLis
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 })
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)
我使用pageCache的方式如下:
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 })
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位于>\u lookup\u对象,第18行
烧瓶缓存顾名思义是烧瓶扩展。所以,若你们不使用烧瓶,就不能正确使用它
您可以改为使用Flask Cache—Flask Cache也在使用它。但是,根据您的需要,最好直接使用memcached,例如使用包装器(如
werkzeug.cache
)时,您会丢失缓存引擎的所有高级功能,因为它使用了相当简单/最低限度的API包装。非常感谢。是否有webpy缓存扩展,我可以用作Flask缓存。