Improved caching.

No longer writes everytime a value is added, since it could cause some issues if two instances of the script were run at the same time. Now it only writes when the  Cache object is no longer in use (ie. garbage colllected).
master
pictuga 2013-04-19 11:40:35 +02:00
parent 4abf7b699c
commit d2b74819b4
1 changed files with 8 additions and 6 deletions

View File

@ -70,20 +70,22 @@ class Cache:
log(str(hash(self._key))) log(str(hash(self._key)))
def __del__(self):
self.save()
def get(self, key): def get(self, key):
if key in self._cached: if key in self._cached:
return b64decode(self._cached[key]) return b64decode(self._cached[key])
else: else:
return None return None
def save(self, key, content): def set(self, key, content):
# Maybe, appending to file when adding new elements could be
# a good idea, but that'd require to check a couple of things,
# like whether it has aleardy been over-written (ie. whether
# it no longer contains self._cached)
self._cache[key] = b64encode(content) self._cache[key] = b64encode(content)
if not os.path.exists(self._file):
self.save()
def save(self):
txt = "" txt = ""
for (key, bdata) in self._cache.iteritems(): for (key, bdata) in self._cache.iteritems():
txt += "\n" + str(key) + "\t" + bdata txt += "\n" + str(key) + "\t" + bdata