[英]Flask-Caching FileSystemCache method does not delete cache items upon timeout
我有一個 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
中,如果您查看get()
function 的源代碼,您會看到如果您嘗試獲取已過期的緩存項,它會刪除文件並返回None
。
此外,查看set()
function 的源代碼,您可以看到對_prune()
的調用( 源代碼)。 這是一個內部function(如果緩存文件的數量超過構造函數中設置的閾值)將go通過緩存目錄中的文件刪除過期文件。
您沒有看到任何文件被刪除的原因可能是因為即使超時時間很短,閾值也可能足夠高,以至於您沒有緩存足夠的文件來開始刪除一些文件。 您可以使用CACHE_THRESHOLD
配置變量來設置可以緩存的最大文件數。
我希望這有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.