如何使失效Beaker缓存生效?

2 投票
1 回答
1604 浏览
提问于 2025-04-16 10:37

我有一个函数,它使用了 Beaker 缓存装饰器。这个函数在一个模块里,然后被导入到主应用中。

from caching import cache, my_cached_function

现在,在一个函数里我使用了这个被装饰的函数:

def index():
    data = my_cached_function() # no args

在另一个函数里,我试图让缓存失效:

def new_item():
    cache.invalidate(my_cached_function, 'namespace')

因为 Beaker 缓存是用 'cache.type': 'memory' 配置的,所以我也试过:

def new_item():
    cache.invalidate(my_cached_function, 'namespace', type='memory')

我这里做错了什么呢?

注意事项

在一般情况下,我大部分时间都会调用 index()。我需要在调用 new_item() 时清除缓存,这样 index() 的调用才能考虑到 new_item() 函数创建的新项目。

这个应用是一个基于 Bottle 框架的网页应用。

1 个回答

2

你需要在调用 my_cached_function 之前,先清除缓存。想了解更多,可以看看 beaker.cache.CacheManager 的文档,里面有个例子。

撰写回答