Flask Cache 不缓存
Flask Cache not caching
我关注了一个tutorial 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()
输出始终是当前时间。
似乎每次请求都会重新创建缓存。我做错了什么?
编辑:我使用 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()
您正在使用 SimpleCache
设置:
cache = Cache(config={'CACHE_TYPE': 'simple'})
这使用单个全局字典来保存缓存,而这反过来仅在您使用使用 一个 Python 解释器 的 WSGI 服务器时才有效服务你所有的 WSGI 请求。如果您使用的 WSGI 服务器使用单独的子进程来处理请求,那么您每次都会获得该字典的一个新副本,并且不会有效地缓存任何内容。
当 运行 使用内置 app.run()
开发服务器时,如果您不使用 processes
参数,代码工作正常。
您的更新显示您 运行 服务器与 5 个单独的进程。每个进程都会得到自己的字典,它们之间不共享缓存。使用不同的缓存后端,比如 filesystem
:
cache = Cache(config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp'})
我关注了一个tutorial 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()
输出始终是当前时间。
似乎每次请求都会重新创建缓存。我做错了什么?
编辑:我使用 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()
您正在使用 SimpleCache
设置:
cache = Cache(config={'CACHE_TYPE': 'simple'})
这使用单个全局字典来保存缓存,而这反过来仅在您使用使用 一个 Python 解释器 的 WSGI 服务器时才有效服务你所有的 WSGI 请求。如果您使用的 WSGI 服务器使用单独的子进程来处理请求,那么您每次都会获得该字典的一个新副本,并且不会有效地缓存任何内容。
当 运行 使用内置 app.run()
开发服务器时,如果您不使用 processes
参数,代码工作正常。
您的更新显示您 运行 服务器与 5 个单独的进程。每个进程都会得到自己的字典,它们之间不共享缓存。使用不同的缓存后端,比如 filesystem
:
cache = Cache(config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp'})