13

In the Flask-Cache documentation all the examples use a finite timeout.

I'd like to never refresh the cache while the app is running. Is this possible, and if so how do I do it?

iwein
  • 25,788
  • 10
  • 70
  • 111
  • 1
    You can't just set it to a really big number? If you want it cached forever, maybe you should just save it to a file and serve that? – Cathy Jul 30 '13 at 06:52
  • Both solutions will do, but I was just curious if infinite caching was supported at all – iwein Jul 30 '13 at 12:48

2 Answers2

22

Flask-Cache uses werkzeug.contrib.cache behind the scenes. From the documentation it's made clear that

A timeout of 0 indicates that the cache never expires.

So yes, infinite caching is supported and can be turned on by setting the timeout to zero.

foob
  • 1,287
  • 2
  • 11
  • 12
8

There does not seem to be anything listed in the docs. I have used the following and it works fine.

     cache = Cache(webapp, config={
         'CACHE_TYPE': 'filesystem',
         'CACHE_DIR': 'cache-dir', 
         'CACHE_DEFAULT_TIMEOUT': 922337203685477580,
         'CACHE_THRESHOLD': 922337203685477580
     })

That is way more years than you will need to worry about so for all intents and purposes, let's call that infinite.

iwein
  • 25,788
  • 10
  • 70
  • 111
Chiedo
  • 7,288
  • 3
  • 26
  • 22
  • As far as `CACHE_THRESHOLD` goes you could set it to e.g. `math.inf` which feels cleaner. – nirvana-msu Sep 30 '19 at 21:03
  • 1
    Big, undefined numbers lead to poor code readability. If I was another dev looking through this code years after it was written, I would have no idea what those numbers mean or how they were generated. Using something more symbolic like `0` or `math.inf` is much better than this. – Hartley Brody Mar 25 '22 at 22:12