Python Flask缓存FileSystemCache方法在超时时不删除缓存项

Python Flask缓存FileSystemCache方法在超时时不删除缓存项,python,caching,flask,flask-caching,Python,Caching,Flask,Flask Caching,我有一个Flask应用程序,并且实现了“Flask缓存”扩展。我使用的是“FileSystemCache”方法。这对我来说都是新的,所以它可能工作正常,我不知道 我发现,当我调用cache.clear()时,我将看到项目从指定为我的缓存位置的目录中删除。但是,当我将超时设置为非常短的时间时,当达到超时持续时间时,我看不到文件被删除 我不确定是应该删除,还是应该编写一个后台任务来删除所有超过超时设置的文件。每个文件都很小,但它们积累得很快 我要求有人告诉我这是否按预期工作。创建一个后台任务来清除目

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

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

我不确定是应该删除,还是应该编写一个后台任务来删除所有超过超时设置的文件。每个文件都很小,但它们积累得很快

我要求有人告诉我这是否按预期工作。创建一个后台任务来清除目录并不是什么问题,但这似乎应该是自动发生的

就相关代码而言,没有太多:

cache = Cache(app,config={'CACHE_TYPE': 'filesystem', 
                      'CACHE_DIR': r"<my cache directory>", 
                      'CACHE_DEFAULT_TIMEOUT': 15})
cache=cache(应用程序,配置={'cache\u TYPE':'filesystem',
'CACHE_DIR':r',
“缓存\默认\超时”:15})

超时时间仅为15秒,以帮助我在此处进行测试,但稍后会增加超时时间。在我的整个代码中,我只使用了@cache.memoize()和偶尔使用的cache.delete_memoized()。

Flask缓存本身不一定会在缓存项超时后自动删除它们。通常,它仅在执行某些操作时才会这样做。例如,在
文件系统缓存
中,如果查看,您可以看到如果试图获取已过期的缓存项,它将删除该文件并返回

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

您没有看到任何文件被删除的原因可能是,即使超时时间很低,阈值也可能太高,以至于您没有缓存足够的文件,无法开始删除某些文件。可以使用设置可以缓存的最大文件数


我希望这有帮助

Flask缓存本身不一定会在缓存项超时后自动删除它们。通常,它仅在执行某些操作时才会这样做。例如,在
文件系统缓存
中,如果查看,您可以看到如果试图获取已过期的缓存项,它将删除该文件并返回

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

您没有看到任何文件被删除的原因可能是,即使超时时间很低,阈值也可能太高,以至于您没有缓存足够的文件,无法开始删除某些文件。可以使用设置可以缓存的最大文件数

我希望这有帮助