The problem is here: cached = cache.disk(cache_key, lambda:None)
The expiration time is not set by the initial call but it is set but each retrieve call. It is the retrieve call above that decided whether the stored value should be considered expired or not. Since you are not specifying a time expire you get the default 300seconds (5 minutes) and then you override it the return of lambda:None, i.e. None. Should be: cached = cache.disk(cache_key, lambda:None, None) On Feb 10, 6:17 am, Dane <[email protected]> wrote: > I'm trying to use cache.disk to cache a large TABLE object > indefinitely. It seems to work fine at first, but then expires after a > couple minutes. > > I'm setting it like this: > > cache.disk.clear('^%s$' % cache_key) > cache.disk(cache_key, lambda:grid, None) > > *(I also tried 10**10 instead of None for duration with same result) > > And I'm accessing like this: > > cached = cache.disk(cache_key, lambda:None) > if cached: return cached > > -Dane

