cache: deepcopy for store/recall values
This commit is contained in:
parent
2bfe732c33
commit
dc70beb0c9
1 changed files with 6 additions and 4 deletions
10
model.py
10
model.py
|
@ -12,6 +12,8 @@ from decimal import Decimal
|
||||||
from sql import With, Literal
|
from sql import With, Literal
|
||||||
from sql.functions import Function
|
from sql.functions import Function
|
||||||
from sql.conditionals import Coalesce
|
from sql.conditionals import Coalesce
|
||||||
|
import copy
|
||||||
|
|
||||||
|
|
||||||
ENABLE_CACHE = True
|
ENABLE_CACHE = True
|
||||||
CACHEKEY_CURRENCY = 'currency-%s'
|
CACHEKEY_CURRENCY = 'currency-%s'
|
||||||
|
@ -86,7 +88,7 @@ class MemCache(Model):
|
||||||
"""
|
"""
|
||||||
if ENABLE_CACHE == False:
|
if ENABLE_CACHE == False:
|
||||||
return None
|
return None
|
||||||
return cls._cashbook_value_cache.get(cache_key)
|
return copy.deepcopy(cls._cashbook_value_cache.get(cache_key))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def store_result(cls, records, cache_keys, values):
|
def store_result(cls, records, cache_keys, values):
|
||||||
|
@ -98,7 +100,7 @@ class MemCache(Model):
|
||||||
data = {x:values[x][record.id]
|
data = {x:values[x][record.id]
|
||||||
for x in values.keys()
|
for x in values.keys()
|
||||||
if record.id in values[x].keys()}
|
if record.id in values[x].keys()}
|
||||||
cls._cashbook_value_cache.set(cache_keys[record.id], data)
|
cls._cashbook_value_cache.set(cache_keys[record.id], copy.deepcopy(data))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def store_value(cls, cache_key, values):
|
def store_value(cls, cache_key, values):
|
||||||
|
@ -106,7 +108,7 @@ class MemCache(Model):
|
||||||
"""
|
"""
|
||||||
if ENABLE_CACHE == False:
|
if ENABLE_CACHE == False:
|
||||||
return
|
return
|
||||||
cls._cashbook_value_cache.set(cache_key, values)
|
cls._cashbook_value_cache.set(cache_key, copy.deepcopy(values))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def read_from_cache(cls, records, cache_keys, names, result):
|
def read_from_cache(cls, records, cache_keys, names, result):
|
||||||
|
@ -117,7 +119,7 @@ class MemCache(Model):
|
||||||
|
|
||||||
todo_records = []
|
todo_records = []
|
||||||
for record in records:
|
for record in records:
|
||||||
values = cls.read_value(cache_keys[record.id])
|
values = copy.deepcopy(cls.read_value(cache_keys[record.id]))
|
||||||
if values:
|
if values:
|
||||||
for name in names:
|
for name in names:
|
||||||
if name not in values.keys():
|
if name not in values.keys():
|
||||||
|
|
Loading…
Reference in a new issue