测试 Flask-Cache 的缓存命中率
Testing the cache hits for Flask-Cache
我正在使用 cache.memoize
通过 Flask-Cache 记忆一个函数。如何获取装饰函数中设置的缓存键?如何在测试期间测试函数是否被缓存?
from flask import Flask
from flask.ext.cache import Cache
app = Flask(__name__)
cache = Cache(app, config={'CACHE_TYPE': 'simple'})
@cache.memoize(timeout=10)
def get_news(nid, lang=None):
return nid, lang
@app.route('/news/<str:nid>')
def news(news_id):
return 'News: ' + get_news(news_id)
使用 memoize
时,缓存键是在后台生成的,永远不需要手动访问。 Flask-Cache 正在处理缓存并为您检索函数的结果。但是如果你对 Flask-Cache 是如何做到的感兴趣,你可以 look at the source。它是函数名称、参数和 uuid 的散列。
您不需要测试缓存命中率,因为 Flask-Cache 已经过测试。您应该测试自己的代码,而不是库代码。但是如果你对 Flask-Cache 是如何做到的感兴趣,你可以 look at the tests。它记忆了一个 returns 当前时间的函数,然后在休眠后检查 return 是否相同。
我正在使用 cache.memoize
通过 Flask-Cache 记忆一个函数。如何获取装饰函数中设置的缓存键?如何在测试期间测试函数是否被缓存?
from flask import Flask
from flask.ext.cache import Cache
app = Flask(__name__)
cache = Cache(app, config={'CACHE_TYPE': 'simple'})
@cache.memoize(timeout=10)
def get_news(nid, lang=None):
return nid, lang
@app.route('/news/<str:nid>')
def news(news_id):
return 'News: ' + get_news(news_id)
使用 memoize
时,缓存键是在后台生成的,永远不需要手动访问。 Flask-Cache 正在处理缓存并为您检索函数的结果。但是如果你对 Flask-Cache 是如何做到的感兴趣,你可以 look at the source。它是函数名称、参数和 uuid 的散列。
您不需要测试缓存命中率,因为 Flask-Cache 已经过测试。您应该测试自己的代码,而不是库代码。但是如果你对 Flask-Cache 是如何做到的感兴趣,你可以 look at the tests。它记忆了一个 returns 当前时间的函数,然后在休眠后检查 return 是否相同。