﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
24402	Missing support for rollback in django.core.cache	Vlada Macek	nobody	"Tried unsuccessfully to find existing ticket for this, so starting an idea discussion.

In my project, I use `memcached` via `django.core.cache` to cache data resulting from some ORM operations. But when the database rolls back, the memcache is kept in the wrong state.

Currently I'm adding another layer with local dict (which has some speed improvements effects):

{{{#!python
class DeferredMemcache(object):
    def __init__(self):
        from django.core import cache  # Importing this way so debug_toolbar can patch it later.

        self.real_cache = cache.cache
        self.local_cache = {}

    def get(self, key, default=None):
        try:
            value, deadline = self.local_cache[key]
        except KeyError:
            return self.real_cache.get(key, default)
        else:
            return value if deadline > time.time() else default

    def set(self, key, value, timeout):
        assert timeout > 0
        self.local_cache[key] = value, timeout + time.time()

    def commit(self):
        for key, (value, deadline) in self.local_cache.iteritems():
            timeout = deadline - time.time()
            if timeout >= 0:
                self.real_cache.set(key, value, timeout)

        self.local_cache.clear()
}}}

What do you think about adding some support for cache rollback in Django?
"	New feature	closed	Core (Cache system)		Normal	duplicate			Unreviewed	0	0	0	0	0	0
