我有一個module包裝一個JSON API查詢歌曲封面/混音數據與每小時/分鐘的請求數限制。我想保留json響應的可選緩存,而不是每次都強制用戶調整緩存/上下文參數。在python中初始化庫/模塊的好方法是什麼?或者你會推薦我只是做明確的事情,並在最終請求json數據的每個調用中使用緩存命名參數?初始化模塊python
我在想這樣做
_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()
import second_hand_songs_wrapper as s
s.set_cache_strategy(s.LFU)
l1 = s.ShsLabel.get_from_resource_id(123)
l2 = s.ShsLabel.get_from_resource_id(123,use_cache=Fale)
編輯: 我可能只打算有兩種策略之一與/一個沒有高速緩存。
我能想到的其他可能的替代初始化方案包括使用環境變量,手動將用戶代碼中的_cache初始化爲None/LFU(),並在所有地方使用顯式緩存(可能默認爲有高速緩存)。
請注意,我沒有在類的實例上設置緩存的原因是,我目前使用從未實例化的類(使用類函數+類狀態作爲單例)來抽象下載json數據以及一些便利/方法來下載某些網址。我可以實例化下載器類,但是我必須將該實例顯式地傳遞給每個函數,或者使用另一個全局變量作爲該類的便利版本。下載者類也跟蹤請求數量(網站每分鐘/小時有限制),因此有多個下載器對象會導致更多麻煩。
爲什麼不在模塊的實例上配置緩存策略? –