Flask-Caching数据存储在哪里?

5
我想知道在使用Flask-Caching时,响应是如何存储的以及存储在哪里。
例如:
from flask import Flask, request
from flask_caching import Cache
import datetime

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

def make_cache_key(*args, **kwargs):
    return request.url

@app.route('/', methods=['GET'])
@cache.cached(timeout=50, key_prefix=make_cache_key)
def foo():
    time = str(datetime.datetime.now()) + " " + str(request.url)
    return time, 200

if __name__ == '__main__':   
    app.run(debug=True)
1个回答

10

简述

在您的示例中,它将存储在Python解释器的内存中。


您的设置是以内存为基础的,因此它不适用于多个服务器之间的扩展。但是,您可以选择指定不同的缓存后端(例如memcached或Redis,甚至可以通过扩展基本缓存类来创建自己的自定义缓存后端)。

根据文档,我们看到它使用werkzeug:

除了通过统一API提供对werkzeug支持的所有缓存后端的支持外

然后当您查看werkzeug缓存文档时:

如果您正在使用开发服务器,则可以创建SimpleCache对象,它是一个简单的缓存,将项目存储在Python解释器的内存中。

然后,它继续显示一个示例,使用与您相同的设置({'CACHE_TYPE': 'simple'}),该设置在Python解释器的内存中。

如果您想使用不同的缓存后端,请参阅配置Flask缓存

内置缓存类型:

null: NullCache(默认)

simple: SimpleCache

memcached: MemcachedCache(需要pylibmc或memcache)

gaememcached: GAEMemcachedCache

redis: RedisCache(需要Werkzeug 0.7)

filesystem: FileSystemCache

saslmemcached: SASLMemcachedCache(需要pylibmc)


这真的很有用。谢谢。 - Wang Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接