【发布时间】:2017-05-24 09:34:15
【问题描述】:
我目前正在使用 pyfscache 在自定义目录中创建缓存并限制存储长度。这是我当前的代码:
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 的年份参数更改缓存时间限制。因此,例如,如果年份是 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))
返回 'DataFrame' 对象没有属性 'name'
有什么指导吗?
【问题讨论】: