[Fixed]-Finding when a django cache was set

1👍

Django does not seem to store that information. The information is (if stored) in the cache implementation of your choice.

This is for example, the way Django stores a key in memcached.

 def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
        key = self.make_key(key, version=version)
        if not self._cache.set(key, value, self.get_backend_timeout(timeout)):
            # make sure the key doesn't keep its old value in case of failure to set (memcached's 1MB limit)
            self._cache.delete(key)

Django does not store the creation time and lets the cache handle the timeout. So if any, you should look into the cache of your choice. I know that Redis, for example, does not store that value either, so you will not be able to make it work at all with redis, even if u bypass Django’s cache and look into Redis.

I think your best choice is to store the key yourself somehow. You can maybe override the @cache_page or simply create an improved @smart_cache_page and store the timestamp of creation there.

EDIT:

There might be other easier ways to achieve that. You could use post_save signals. Something like this: Expire a view-cache in Django?

Read carefully through it since the implementation depends on your Django version.

Leave a comment