cacheinram has destroyer, thanks Michele (issue 729)
This commit is contained in:
@@ -1 +1 @@
|
||||
Version 1.99.7 (2012-03-28 21:37:42) dev
|
||||
Version 1.99.7 (2012-03-28 21:53:08) dev
|
||||
|
||||
+6
-1
@@ -163,7 +163,8 @@ class CacheInRam(CacheAbstract):
|
||||
self.locker.release()
|
||||
|
||||
def __call__(self, key, f,
|
||||
time_expire = DEFAULT_TIME_EXPIRE):
|
||||
time_expire = DEFAULT_TIME_EXPIRE,
|
||||
destroyer = None):
|
||||
"""
|
||||
Attention! cache.ram does not copy the cached object. It just stores a reference to it.
|
||||
Turns out the deepcopying the object has some problems:
|
||||
@@ -179,6 +180,8 @@ class CacheInRam(CacheAbstract):
|
||||
item = self.storage.get(key, None)
|
||||
if item and f is None:
|
||||
del self.storage[key]
|
||||
if destroyer:
|
||||
destroyer(item[1])
|
||||
self.storage[CacheAbstract.cache_stats_name]['hit_total'] += 1
|
||||
self.locker.release()
|
||||
|
||||
@@ -186,6 +189,8 @@ class CacheInRam(CacheAbstract):
|
||||
return None
|
||||
if item and (dt is None or item[0] > time.time() - dt):
|
||||
return item[1]
|
||||
elif item and (item[0] < time.time() - dt) and destroyer:
|
||||
destroyer(item[1])
|
||||
value = f()
|
||||
|
||||
self.locker.acquire()
|
||||
|
||||
@@ -2737,9 +2737,6 @@ class FireBirdEmbeddedAdapter(FireBirdAdapter):
|
||||
user=credential_decoder(user),
|
||||
password=credential_decoder(password),
|
||||
charset=charset))
|
||||
#def connect(driver_args=driver_args):
|
||||
# return kinterbasdb.connect(**driver_args)
|
||||
|
||||
def connect(driver_args=driver_args):
|
||||
return self.driver.connect(**driver_args)
|
||||
self.pool_connection(connect)
|
||||
|
||||
Reference in New Issue
Block a user