used gluon/contrib/orderddict
This commit is contained in:
+9
-6
@@ -30,6 +30,10 @@ import hashlib
|
|||||||
import datetime
|
import datetime
|
||||||
import tempfile
|
import tempfile
|
||||||
from gluon import recfile
|
from gluon import recfile
|
||||||
|
try:
|
||||||
|
from collections import OrderdDict
|
||||||
|
except ImportError:
|
||||||
|
from gluon.contrib.ordereddict import OrderedDict
|
||||||
try:
|
try:
|
||||||
from gluon import settings
|
from gluon import settings
|
||||||
have_settings = True
|
have_settings = True
|
||||||
@@ -42,11 +46,10 @@ except:
|
|||||||
import pickle
|
import pickle
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from collections import OrderedDict
|
|
||||||
import psutil
|
import psutil
|
||||||
CAN_DO_CLEANUP = True
|
HAVE_PSUTIL = True
|
||||||
except ImportError:
|
except ImportError:
|
||||||
CAN_DO_CLEANUP = False
|
HAVE_PSUTIL = False
|
||||||
|
|
||||||
def remove_oldest_entries(storage, percentage=90):
|
def remove_oldest_entries(storage, percentage=90):
|
||||||
# compute current memory usage (%)
|
# compute current memory usage (%)
|
||||||
@@ -173,7 +176,7 @@ class CacheInRam(CacheAbstract):
|
|||||||
def __init__(self, request=None):
|
def __init__(self, request=None):
|
||||||
self.initialized = False
|
self.initialized = False
|
||||||
self.request = request
|
self.request = request
|
||||||
self.storage = OrderedDict() if CAN_DO_CLEANUP else {}
|
self.storage = OrderedDict() if HAVE_PSUTIL else {}
|
||||||
self.app = request.application if request else ''
|
self.app = request.application if request else ''
|
||||||
def initialize(self):
|
def initialize(self):
|
||||||
if self.initialized:
|
if self.initialized:
|
||||||
@@ -183,7 +186,7 @@ class CacheInRam(CacheAbstract):
|
|||||||
self.locker.acquire()
|
self.locker.acquire()
|
||||||
if not self.app in self.meta_storage:
|
if not self.app in self.meta_storage:
|
||||||
self.storage = self.meta_storage[self.app] = \
|
self.storage = self.meta_storage[self.app] = \
|
||||||
OrderedDict() if CAN_DO_CLEANUP else {}
|
OrderedDict() if HAVE_PSUTIL else {}
|
||||||
self.stats[self.app] = {'hit_total': 0, 'misses': 0}
|
self.stats[self.app] = {'hit_total': 0, 'misses': 0}
|
||||||
else:
|
else:
|
||||||
self.storage = self.meta_storage[self.app]
|
self.storage = self.meta_storage[self.app]
|
||||||
@@ -244,7 +247,7 @@ class CacheInRam(CacheAbstract):
|
|||||||
self.locker.acquire()
|
self.locker.acquire()
|
||||||
self.storage[key] = (now, value)
|
self.storage[key] = (now, value)
|
||||||
self.stats[self.app]['misses'] += 1
|
self.stats[self.app]['misses'] += 1
|
||||||
if CAN_DO_CLEANUP:
|
if HAVE_PSUTIL:
|
||||||
remove_oldest_entries(self.storage)
|
remove_oldest_entries(self.storage)
|
||||||
self.locker.release()
|
self.locker.release()
|
||||||
return value
|
return value
|
||||||
|
|||||||
Reference in New Issue
Block a user