#24402: Missing support for rollback in django.core.cache -------------------------------------+-------------------- Reporter: Tuttle | Owner: nobody Type: New feature | Status: new Component: Core (Cache system) | Version: Severity: Normal | Keywords: Triage Stage: Unreviewed | Has patch: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+-------------------- 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? -- Ticket URL: <https://code.djangoproject.com/ticket/24402> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/049.341add49f1b9c2ae6cd7f2d9ae7149e6%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.