git://git.onelab.eu
/
sfa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rough cleanup of component manager
[sfa.git]
/
sfa
/
util
/
cache.py
diff --git
a/sfa/util/cache.py
b/sfa/util/cache.py
index
a2ded4a
..
175968b
100644
(file)
--- a/
sfa/util/cache.py
+++ b/
sfa/util/cache.py
@@
-7,8
+7,9
@@
import threading
import pickle
from datetime import datetime
import pickle
from datetime import datetime
-# maximum lifetime of cached data (in seconds)
-MAX_CACHE_TTL = 60 * 60
+# maximum lifetime of cached data (in seconds)
+DEFAULT_CACHE_TTL = 60 * 60
+
class CacheData:
class CacheData:
@@
-17,7
+18,7
@@
class CacheData:
expires = None
lock = None
expires = None
lock = None
- def __init__(self, data, ttl
= MAX
_CACHE_TTL):
+ def __init__(self, data, ttl
=DEFAULT
_CACHE_TTL):
self.lock = threading.RLock()
self.data = data
self.renew(ttl)
self.lock = threading.RLock()
self.data = data
self.renew(ttl)
@@
-31,26
+32,25
@@
class CacheData:
def get_expires_date(self):
return str(datetime.fromtimestamp(self.expires))
def get_expires_date(self):
return str(datetime.fromtimestamp(self.expires))
- def renew(self, ttl
= MAX
_CACHE_TTL):
+ def renew(self, ttl
=DEFAULT
_CACHE_TTL):
self.created = time.time()
self.created = time.time()
- self.expires = self.created + ttl
-
- def set_data(self, data, renew=True, ttl
= MAX
_CACHE_TTL):
- with self.lock:
+ self.expires = self.created + ttl
+
+ def set_data(self, data, renew=True, ttl
=DEFAULT
_CACHE_TTL):
+ with self.lock:
self.data = data
if renew:
self.renew(ttl)
self.data = data
if renew:
self.renew(ttl)
-
+
def get_data(self):
return self.data
def get_data(self):
return self.data
-
def dump(self):
return self.__dict__
def __str__(self):
def dump(self):
return self.__dict__
def __str__(self):
- return str(self.dump())
-
+ return str(self.dump())
+
def tostring(self):
return self.__str__()
def tostring(self):
return self.__str__()
@@
-62,38
+62,38
@@
class CacheData:
def __setstate__(self, d):
self.__dict__.update(d)
self.lock = threading.RLock()
def __setstate__(self, d):
self.__dict__.update(d)
self.lock = threading.RLock()
-
+
class Cache:
class Cache:
- cache
= {}
+ cache = {}
lock = threading.RLock()
def __init__(self, filename=None):
if filename:
self.load_from_file(filename)
lock = threading.RLock()
def __init__(self, filename=None):
if filename:
self.load_from_file(filename)
-
- def add(self, key, value, ttl
= MAX
_CACHE_TTL):
+
+ def add(self, key, value, ttl
=DEFAULT
_CACHE_TTL):
with self.lock:
with self.lock:
- if
self.cache.has_key(key)
:
+ if
key in self.cache
:
self.cache[key].set_data(value, ttl=ttl)
else:
self.cache[key] = CacheData(value, ttl)
self.cache[key].set_data(value, ttl=ttl)
else:
self.cache[key] = CacheData(value, ttl)
-
+
def get(self, key):
data = self.cache.get(key)
def get(self, key):
data = self.cache.get(key)
- if not data:
+ if not data:
data = None
elif data.is_expired():
self.pop(key)
data = None
elif data.is_expired():
self.pop(key)
- data = None
+ data = None
else:
data = data.get_data()
return data
def pop(self, key):
if key in self.cache:
else:
data = data.get_data()
return data
def pop(self, key):
if key in self.cache:
- self.cache.pop(key)
+ self.cache.pop(key)
def dump(self):
result = {}
def dump(self):
result = {}
@@
-102,15
+102,15
@@
class Cache:
return result
def __str__(self):
return result
def __str__(self):
- return str(self.dump())
-
+ return str(self.dump())
+
def tostring(self):
def tostring(self):
- return self.__str()
+ return self.__str()
def save_to_file(self, filename):
def save_to_file(self, filename):
- f = open(filename, 'w')
+ f = open(filename, 'w
b
')
pickle.dump(self.cache, f)
def load_from_file(self, filename):
pickle.dump(self.cache, f)
def load_from_file(self, filename):
- f = open(filename, 'r')
+ f = open(filename, 'r
b
')
self.cache = pickle.load(f)
self.cache = pickle.load(f)