X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=monitor%2Fdatabase%2Fdbpickle.py;h=074ff68e2db943c222db0f5463e7e0d5ed0210a7;hb=7b3d462aa05fcc1892fd914db163143f36a05945;hp=6f3a87dcb7fff63e23fd794d15b62772199a6c3d;hpb=19414270cf2c8429daab02fdebbd8081d9ba0db0;p=monitor.git diff --git a/monitor/database/dbpickle.py b/monitor/database/dbpickle.py index 6f3a87d..074ff68 100644 --- a/monitor/database/dbpickle.py +++ b/monitor/database/dbpickle.py @@ -3,6 +3,7 @@ import sys import pickle import inspect import shutil +import time from monitor import config noserial=False @@ -16,6 +17,31 @@ except: DEBUG= 0 PICKLE_PATH=config.MONITOR_DATA_ROOT +def lastModified(name, type=None): + # TODO: fix for 'debug' mode also. + t = SPickle().mtime("production.%s" % name, type) + return t + +def cachedRecently(name, length=int(config.cachetime), type=None): + """ + return true or false based on whether the modified time of the cached + file is within 'length' minutes. + """ + if hasattr(config, 'cachecalls') and not config.cachecalls: + # don't use cached calls if cachecalls is false + return False + + try: + t = lastModified(name, type) + except: + # file doesn't exist or we can't access it. + return False + + current_time = time.time() + if current_time > t + length*60: + return False + else: + return True def dbLoad(name, type=None): return SPickle().load(name, type) @@ -73,6 +99,10 @@ class SPickle: raise Exception("No PHPSerializer module available") return "%s/%s.phpserial" % (self.path, name) + + def mtime(self, name, type=None): + f = os.stat(self.__file(name, type)) + return f[-2] def exists(self, name, type=None): return os.path.exists(self.__file(name, type))