From be693bee4beef5866a901a81c74e6ef91bb06ecd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 27 Dec 2018 22:02:07 +0100 Subject: [PATCH] clear cache after each map update --- src/c3nav/mapdata/utils/cache/local.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/c3nav/mapdata/utils/cache/local.py b/src/c3nav/mapdata/utils/cache/local.py index 7d4f3c13..2d081b25 100644 --- a/src/c3nav/mapdata/utils/cache/local.py +++ b/src/c3nav/mapdata/utils/cache/local.py @@ -2,6 +2,8 @@ from collections import OrderedDict from django.core.cache import cache +from c3nav.mapdata.models import MapUpdate + class NoneFromCache: pass @@ -12,7 +14,9 @@ class LocalCacheProxy: # only usable for stuff that never changes, obviously def __init__(self, maxsize=128): self._maxsize = maxsize + self._mapupdate = None self._items = OrderedDict() + self._check_mapupdate() def get(self, key, default=None): print('get') @@ -36,7 +40,14 @@ class LocalCacheProxy: while len(self._items) > self._maxsize: self._items.pop(next(iter(self._items.keys()))) + def _check_mapupdate(self): + mapupdate = MapUpdate.current_cache_key() + if self._mapupdate != mapupdate: + self._items = [] + self._mapupdate = mapupdate + def set(self, key, value, expire): + self._check_mapupdate() cache.set(key, value, expire) self._items[key] = value self._prune()