We sometime need to cache our server response to save time and bandwidth.
There are external libraries out there for caching like dictttl
The following is a python implementation without any 3rd party libs.
Wou can add one more parameter to your expensive function: ttl_hash=None. This new parameter is so-called “time sensitive hash”, its the only purpose is to affect lru_cache.
from functools import lru_cache import time @lru_cache() def my_expensive_function(a, b, ttl_hash=None): del ttl_hash # to emphasize we don't use it and to shut pylint up return a + b # horrible CPU load... def get_ttl_hash(seconds=3600): """Return the same value withing `seconds` time period""" return round(time.time() / seconds) # somewhere in your code... res = my_expensive_function(2, 2, ttl_hash=get_ttl_hash()) # cache will be updated once in an hour