Fra*_*e91 8 python caching flask flask-cache
我遵循了Flask-Cache 的教程,并尝试自己实现它.鉴于以下示例,为什么Flask不会缓存时间?
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()
Run Code Online (Sandbox Code Playgroud)
输出始终是当前时间.
看起来每个请求都会重新创建缓存.我究竟做错了什么?
编辑:我用Python 2.7.6执行以下python文件:
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()
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 18
您正在使用SimpleCache设置:
cache = Cache(config={'CACHE_TYPE': 'simple'})
Run Code Online (Sandbox Code Playgroud)
这使用单个全局字典来保存缓存,而这只有在您使用使用一个Python解释器来提供所有WSGI请求的WSGI服务器时才会起作用.如果您使用使用单独子进程处理请求的WSGI服务器,则每次都会获得该字典的新副本,并且不会有效地缓存任何内容.
在使用内置app.run()开发服务器时,代码工作正常,因为您不使用该processes参数.
您的更新显示您使用5个单独的进程运行服务器.每个进程都将获得自己的字典,并且不会在它们之间共享缓存.使用不同的缓存后端,例如filesystem:
cache = Cache(config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp'})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2700 次 |
| 最近记录: |