gpt4 book ai didi

python - Flask-Caching FileSystemCache 方法在超时时不会删除缓存项

转载 作者:太空宇宙 更新时间:2023-11-03 20:23:19 27 4
gpt4 key购买 nike

我有一个 Flask 应用程序,并且我已经实现了“Flask-Caching”扩展。我正在使用“FileSystemCache”方法。这对我来说是全新的,所以它可能工作正常,但我不知道。

我发现当我调用cache.clear()时,我会看到项目从指定为我的缓存位置的目录中删除。但是,当我将超时设置得很短时,达到超时持续时间后我没有看到文件被删除。

我不确定是否应该删除它,或者我是否应该编写一个后台任务来删除所有早于超时设置的文件。每个文件都很小,但积累起来很快。

我请求有人告诉我这是否按预期工作。创建后台任务来清除目录没有问题,但似乎这应该自动发生。

就相关代码而言,并不多:

cache = Cache(app,config={'CACHE_TYPE': 'filesystem', 
'CACHE_DIR': r"<my cache directory>",
'CACHE_DEFAULT_TIMEOUT': 15})

超时只有 15 秒,以帮助我在这里进行测试,但稍后会增加。在我的代码中,我只真正使用 @cache.memoize() 和偶尔的 cache.delete_memoized()。

最佳答案

Flask-Caching 本身并不一定会在缓存项超时后自动删除它们。一般来说,它只会在执行某些操作时才会这样做。例如,在 FileSystemCache 中,如果您查看 source code for the get() function您可以看到,如果您尝试获取已过期的缓存项目,它会删除该文件并返回 None

此外,查看 source code for the set() function ,您可以看到对 _prune() ( source code ) 的调用。这是一个内部函数,(如果缓存文件的数量超过构造函数中设置的阈值)将遍历缓存目录中的文件并删除过期的文件。

您没有看到任何文件被删除的原因可能是因为即使超时很短,阈值也可能足够高,以至于您没有缓存足够的文件以使其开始删除一些文件。您可以使用 CACHE_THRESHOLD config variable设置可以缓存的最大文件数。

希望这会有所帮助!

关于python - Flask-Caching FileSystemCache 方法在超时时不会删除缓存项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com