首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >烧瓶缓存不缓存

烧瓶缓存不缓存
EN

Stack Overflow用户
提问于 2015-10-06 17:02:58
回答 1查看 6.4K关注 0票数 12

我遵循了一个tutorial的烧瓶缓存,并试图实现它自己。考虑到下面的例子,为什么Flask不缓存时间?

代码语言:javascript
复制
from flask import Flask
import time

app = Flask(__name__)
cache = Cache(config={'CACHE_TYPE': 'simple'})
cache.init_app(app)

@app.route('/time')
@cache.cached(timeout=50, key_prefix='test')
def test():
   return time.ctime()

输出总是当前时间。

似乎每个请求都会重新创建缓存。我做错了什么?

编辑:我使用Python2.7.6执行以下Python文件:

代码语言:javascript
复制
def runserver():
    port = int(os.environ.get('PORT', 5000))
    Triangle(app)
    app.run(host='0.0.0.0', port=port, processes=5)


if __name__ == '__main__':
    runserver()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-06 17:13:10

您正在使用SimpleCache设置:

代码语言:javascript
复制
cache = Cache(config={'CACHE_TYPE': 'simple'})

这使用单一的全局字典来保存缓存,而只有在使用使用一个Python解释器来服务所有WSGI请求的WSGI服务器时,这才能工作。如果您使用使用单独子进程来处理请求的WSGI服务器,则每次都会得到该字典的新副本,并且没有缓存任何内容。

在不使用app.run()参数的情况下,当运行内置的processes开发服务器时,代码工作得很好。

您的更新显示您使用5个单独的进程运行服务器。每个进程都将获得自己的字典,并且缓存不会在它们之间共享。使用不同的缓存后端,如filesystem

代码语言:javascript
复制
cache = Cache(config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp'})
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32975598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档