This page looks best with JavaScript enabled

Caching a response in python

 ·   ·  β˜• 1 min read

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

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

Ohidur Rahman Bappy
Ohidur Rahman Bappy
πŸ“šLearner 🐍 Developer