2011-01-25 55 views
2

我有一個用燒杯緩存裝飾器裝飾的功能。該函數位於將其導入主應用程序的模塊中。現在如何使失效的燒杯緩存工作?

from caching import cache, my_cached_function 

,在一個功能我用的裝飾功能:

def index(): 
    data = my_cached_function() # no args 

在另一個函數,我嘗試緩存失效:

def new_item(): 
    cache.invalidate(my_cached_function, 'namespace') 

由於燒杯緩存配置與'cache.type': 'memory' ,我也試過:

def new_item(): 
    cache.invalidate(my_cached_function, 'namespace', type='memory') 

我在這做錯了什麼?

注意

在一般情況下,我會打電話指數()的大部分時間。每當調用new_item()時我都需要清除緩存,以便index()調用將考慮new_item()函數創建的新項目。

有問題的應用程序是在瓶框架上運行的Web應用程序。

回答

2

您需要在調用my_cached_function之前使緩存中的無效。例如,請參閱beaker.cache.CacheManager documentation

+0

它在理論上被稱爲my_cached_function之前。當用戶創建一個新項目時,會調用new_item()函數,這會使緩存失效。然後,他訪問索引頁面,在該頁面中調用裝飾函數。索引頁面應顯示包含新項目的項目列表,但不是。 – hayavuk 2011-01-26 11:19:48