0
我目前使用pyfscache在自定義目錄中創建緩存並限制存儲的長度。這是我當前的代碼:基於函數參數動態設置緩存的Python裝飾器
Import pyfscache
Import pandas as pd
def cache_one_day(func):
years = 0
days = 1
cache = pyfscache.FSCache(CACHE_DIRECTORY, years=years, days=1)
return cache(func)
@cache_one_day
def get_data(year):
columns = [str(year), str(year + 1), str(year + 2)]
data = [1, 2, 3]
df = pd.DataFrame(data, columns=columns)
return df
我還想根據get_data的year參數更改緩存時間限制。例如,如果年份是2017年,我想經常刷新數據並設置天數= 1(如圖所示)。但如果是2015年,我已經知道數據不會改變,我更願意創建年份爲99的存檔。
我知道我可以在get_data函數中編寫if語句,但這不是'我想使用這個邏輯的唯一功能。因此,我寧願使用別的東西。我已經看過類裝飾器和分層裝飾器,並試圖寫每個,但我得到的錯誤。例如,下面的代碼:
class my_decorator(object):
def __init__(self, view_func):
self._years = 0
self._seconds = 0
self.view_func = view_func
wraps(view_func)(self)
def __call__(self, request, *args, **kwargs):
if request == 2017:
self._seconds = 1
else:
self._years = 1
cache = pyfscache.FSCache(CACHE_DIRECTORY, years=self._years,
seconds=self._seconds)
return cache(self.view_func(request, *args, **kwargs))
返回 '數據幀' 對象有沒有屬性 '名'
任何指導意見?
我試過,但它給我的方式pyfscache作品的錯誤。我想我不得不考慮編寫自己的緩存系統。 – exballer