我有一个module,它包装了一个jsonapi,用于查询歌曲封面/混音数据,并限制了每小时/分钟的请求数。我希望保留json响应的可选缓存,而不必每次都强制用户调整cache/context参数。在python中初始化库/模块的好方法是什么?或者,您是否建议我只执行显式操作,并在每个最终请求json数据的调用中使用一个名为cache的参数?在
我在想
_cache = None
class LFU(object):
...
NO_CACHE, LFU = "NO_CACHE", "LFU"
def set_cache_strategy(strategy):
if _cache == NO_CACHE:
_cache = None
else:
_cache = LFU()
编辑: 我可能只打算有两个策略一个有/一个没有缓存。在
我能想到的其他可能的初始化方案还包括使用环境变量、手动将用户代码中的\u cache初始化为None/LFU(),以及在任何地方使用显式缓存(可能默认为拥有缓存)。在
注意,我不在类的实例上设置缓存的原因是,我当前使用一个从未实例化的类(使用类函数+类状态作为一个单例)来抽象下载json数据以及一些下载特定url的方便/方法。我可以实例化downloader类,但之后必须显式地将实例传递给每个函数,或者使用另一个全局变量来实现该类的方便版本。downloader类还跟踪请求数(网站每分钟/小时有限制),因此拥有多个下载器对象会带来更多麻烦。在
设置默认值没有错,即使默认值是
None
。不过,我要指出的是,拥有伪常量和条件(前提是您只使用这些值)是多余的。尝试:如果您想为可用策略提供一个方便的方法,只需包装
caching_strategies.keys()
。实际上,就您的策略而言,您可能应该让您的所有策略都继承自某个基本策略,并且只需创建一个nou cache strategy类,该类继承自该类并为您的标准化缓存接口创建所有方法存根。在相关问题 更多 >
编程相关推荐