Opened 10 years ago
Closed 10 years ago
#24402 closed New feature (duplicate)
Missing support for rollback in django.core.cache
Reported by: | Vlada Macek | Owned by: | nobody |
---|---|---|---|
Component: | Core (Cache system) | Version: | |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
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):
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?
Change History (3)
comment:1 by , 10 years ago
comment:3 by , 10 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Could you please open a discussion on the DevelopersMailingList to get feedback on the idea?