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()
|
self.locker.release()
|
||||||
|
|
||||||
def __call__(self, key, f,
|
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.
|
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:
|
Turns out the deepcopying the object has some problems:
|
||||||
@@ -179,6 +180,8 @@ class CacheInRam(CacheAbstract):
|
|||||||
item = self.storage.get(key, None)
|
item = self.storage.get(key, None)
|
||||||
if item and f is None:
|
if item and f is None:
|
||||||
del self.storage[key]
|
del self.storage[key]
|
||||||
|
if destroyer:
|
||||||
|
destroyer(item[1])
|
||||||
self.storage[CacheAbstract.cache_stats_name]['hit_total'] += 1
|
self.storage[CacheAbstract.cache_stats_name]['hit_total'] += 1
|
||||||
self.locker.release()
|
self.locker.release()
|
||||||
|
|
||||||
@@ -186,6 +189,8 @@ class CacheInRam(CacheAbstract):
|
|||||||
return None
|
return None
|
||||||
if item and (dt is None or item[0] > time.time() - dt):
|
if item and (dt is None or item[0] > time.time() - dt):
|
||||||
return item[1]
|
return item[1]
|
||||||
|
elif item and (item[0] < time.time() - dt) and destroyer:
|
||||||
|
destroyer(item[1])
|
||||||
value = f()
|
value = f()
|
||||||
|
|
||||||
self.locker.acquire()
|
self.locker.acquire()
|
||||||
|
|||||||
@@ -2737,9 +2737,6 @@ class FireBirdEmbeddedAdapter(FireBirdAdapter):
|
|||||||
user=credential_decoder(user),
|
user=credential_decoder(user),
|
||||||
password=credential_decoder(password),
|
password=credential_decoder(password),
|
||||||
charset=charset))
|
charset=charset))
|
||||||
#def connect(driver_args=driver_args):
|
|
||||||
# return kinterbasdb.connect(**driver_args)
|
|
||||||
|
|
||||||
def connect(driver_args=driver_args):
|
def connect(driver_args=driver_args):
|
||||||
return self.driver.connect(**driver_args)
|
return self.driver.connect(**driver_args)
|
||||||
self.pool_connection(connect)
|
self.pool_connection(connect)
|
||||||
|
|||||||
Reference in New Issue
Block a user