【问题标题】:How/where does Flask-Caching store data?Flask-Caching 如何/在哪里存储数据?
【发布时间】:2017-10-31 14:55:52
【问题描述】:

我只是想知道使用 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)

【问题讨论】:

    标签: flask flask-caching


    【解决方案1】:

    tl;博士

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


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

    根据docs,我们看到它使用了werkzeug:

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

    那么当你看werkzeug cache docs:

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

    然后它继续展示一个使用相同设置 ({'CACHE_TYPE': 'simple'}) 的示例,它说这是 Python 解释器的内存中。

    如果您想使用不同的缓存后端,请查看Configuring Flask Caching

    内置缓存类型:

    null:NullCache(默认)

    简单:简单缓存

    memcached:MemcachedCache(需要pylibmc或memcache)

    gaememcached:GAEMemcachedCache

    redis:RedisCache(需要 Werkzeug 0.7)

    文件系统:文件系统缓存

    saslmemcached:SASLMemcachedCache(需要 pylibmc)

    【讨论】:

    • 这真的很有用。谢谢
    猜你喜欢
    • 2016-09-01
    • 2019-03-11
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2015-11-17
    • 2012-04-11
    • 2011-12-14
    • 2020-01-07
    相关资源
    最近更新 更多