Flask-Caching如何/在哪里存储数据?

时间:2017-05-31 00:48:29

标签: flask flask-caching

我只是想知道在使用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 个答案:

答案 0 :(得分:5)

TL;博士

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

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

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

  

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

然后当你看werkzeug cache docs

  

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

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

如果您想使用其他缓存后端,请查看Configuring Flask Caching

  

内置缓存类型:

     

null :NullCache(默认)

     

简单:SimpleCache

     

memcached :MemcachedCache(需要pylibmc或memcache)

     

gaememcached :GAEMemcachedCache

     

redis :RedisCache(需要Werkzeug 0.7)

     

filesystem :FileSystemCache

     

saslmemcached :SASLMemcachedCache(需要pylibmc)

相关问题